【问题标题】:Can i use IP Address as SMTP host rather then smtp.email.com我可以使用 IP 地址作为 SMTP 主机而不是 smtp.email.com
【发布时间】:2012-09-19 14:55:02
【问题描述】:

我正在创建一个电子邮件发送示例应用程序,并且我想使用从不同的电子邮件地址发送电子邮件,例如“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");
        }

【问题讨论】:

  • 编写垃圾邮件引擎? ;-) 说真的,包含您的用例可能会有所帮助,因为您还可以获得更好的建议来帮助您尝试做的事情。
  • 您不必更改 smtp 主机,如果您拥有 smtp.gmail.com 的有效凭据,它将允许您向任何主机发送电子邮件。

标签: c# .net email smtp smtpclient


【解决方案1】:

当然,您可以使用 IP 地址代替名称,但请记住,如果他们更改了 IP,您将停止工作.. 但是.. 这需要根据您发送邮件的内容进行更改,除非你会发现某种形式的中继代理是开放的。因为 yahoo 不会接收 gmail,而 gmail 不会接收 yahoo 等。现实情况是,如果你发送它最终会改变你使用 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"); 
}

【讨论】:

  • 你说我可以使用我的域作为我的 SMTP 主机地址
  • 不用担心我的 ip 地址,每次我使用我的应用程序时,我都会获取我的 ip 并将其参数化设置为我的 SMTP 地址
  • 网络托管公司的数量多得你无法动摇,但是,大多数要么使用您的域,例如“www.myweb.com”,要么在“myweb.theirname.com”上提供,通常为后者提供一个电子邮件地址。因此,在第一个实例中,您的域“myweb.com”他们接受从您的网络服务器发送到您的域的电子邮件。但是,他们确实经常会限制发送的邮件数量..
  • “你的”IP?这是从哪里来的,你要运行一个开放的真实邮件服务器?这将很快被列入黑名单并被滥用
  • thanx for your code.:) 但是当我使用它时出现此错误“当前上下文中不存在名称'textbox1'”
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多