0

我正在创建一个电子邮件发送示例应用程序,我想使用从不同的电子邮件地址发送电子邮件,例如“gmail、yahoo、hotmail”,所以我不想使用“smtp.email.com”作为主机,因为如果我使用“smtp.email.com”作为主机我将不得不为每个不同的公司更改我的主机名,例如(“smtp.gmail.com”对于 gmail 或“smtp.mail.yahoo.com”对于 yahoo.com)所以我可以使用 IP 地址作为 SMTP 主机,而不是 smtp.email.com。

请给我一个解决方案,以便在不更改 smtp 主机名的情况下,我可以使用不同的电子邮件公司发送电子邮件。

这是我的代码:

        try
        {
            // setup mail message
            MailMessage message = new MailMessage();
            message.From = new MailAddress(textBox1.Text);
            message.To.Add(new MailAddress(textBox2.Text));
            message.Subject = textBox3.Text;
            message.Body = richTextBox1.Text;

            // setup mail client
            SmtpClient mailClient = new SmtpClient("smtp.gmail.com");//here i have to change SMTP host for different email company 
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password");

            // send message
            mailClient.Send(message);

            MessageBox.Show("Sent");
        }
        catch(Exception)
        {
            MessageBox.Show("Error");
        }
4

1 回答 1

1

当然,您可以使用 IP 地址代替名称,但请记住,如果他们更改了 IP,您将停止工作.. 但是.. 这需要根据您发送邮件的内容进行更改,除非您找到一些中继代理的形式是开放的。因为雅虎不会接收 gmail,而 gmail 不会接收雅虎等。现实情况是,如果您发送它最终会改变您是否使用 IP 或名称。

但是,您的网络服务器很可能会从您的域发送邮件,而不是您的 gmail/yahoo 帐户。为什么不从您的域发送邮件呢?例如 noreply@myweb.com 然后 smtp 服务器与您的网络提供商保持相同

你当然可以

SmtpClient mailClient
if (textbox1.Text.Contains("gmail") 
{
            mailClient = new SmtpClient("smtp.gmail.com");/
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password"); 
}
else if (textbox1.Text.Contains("somemail") 
{
            mailClient = new SmtpClient("smtp.somemail.com");/
            mailClient.Credentials = new NetworkCredential(textBox1.Text,"password"); 
}

ETC

于 2012-09-19T06:55:02.877 回答