使用Godaddy SMTP从Windows Azure服务发送邮件

时间:2012-09-15 12:05:21

标签: c# asp.net azure web-config godaddy

通过以下设置,我无法从本地PC发送邮件。搜索了堆栈溢出的许多响应 -

  1. 我尝试将主机从smtpout.secureserver.net交换到relay-hosting.secureserver.net。这没有帮助。 (可能是因为在godaddy服务器上托管时必须使用中继托管)我的主机是windows azure服务。
  2. 我读到了defaultCredentials& enableSSL是相互的 独家。请提出建议。
  3. 端口25 可能被多个ISP阻止,因此作为替代端口80 可用于使用http。
  4. 发送邮件
  5. System.net.Mail不支持godaddy的465端口用于https。
  6. 尝试了所有这些可能性之后,我最终得到了两个错误中的任何一个 -

    1. 发送邮件失败 - 无法连接远程服务器。
    2. SMTP服务器需要安全连接,否则客户端不需要 认证
    3. 问题1. 请准确地说明,从Windows Azure服务中使用godaddy smtp服务器需要哪些配置?

      从localhost我试图启用自签名证书,如Scott所建议的那样..

      http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx

      问题2. 指定来自         web.config中的地址似乎是多余的,因为在MailMessage中我们必须这样做         再次从地址输入。它的目的是什么?

      配置Azure以配置IIS以使用azure服务的最简单方法                                      
        

          private void SendMail(MailMessage msg)
          {
              try
              {
                  var smtp = new SmtpClient();
                  smtp.Send(msg);
              }
              catch (SmtpFailedRecipientException exFailed)
              {
                  lblExSendMail.Text = exFailed.Message;
              }
          }
      
      <system.net>
      <mailSettings>
        <smtp deliveryMethod="Network" from="xyz@xyz.com">
          <network host="smtpout.secureserver.net" port="80" userName="xyz@xyz.com" password="xyz-password" />
        </smtp>
      </mailSettings>
      

3 个答案:

答案 0 :(得分:2)

  1. Ans 1.端口80代替使用25对我发送邮件起作用 使用http频道。这适用于本地和Windows Azure。除了host,port = 80,userName和password - > gt; for http。

  2. 之外,不要在网络元素smtp中指定任何其他内容。
  3. Ans 2.来自web.config中smtp元素的属性 MailMessage的无参数构造函数。这是特别的 当您要通过公共电子邮件地址发送邮件时非常有用。

答案 1 :(得分:1)

使用第三方SMTP服务器从Windows Azure应用程序发送电子邮件不需要在任何一方,Windows Azure或第三方SMTP服务器上进行任何特殊配置。大多数SMTP服务器都设置为使用端口25,这是从Windows Azure发送电子邮件的最简单方法,GoDaddy SMTP服务器也设置为使用端口25,因此您确定可以轻松完成。任何一方都不需要SSL / certifcate配置。

以下代码段是您可以直接在C#app或Windows Azure中使用的最简单的代码,无需任何配置和goDaddy SMTP服务:

SmtpClient MySMTPClient;
MailMessage myEmail;
MySMTPClient = new SmtpClient("smtp.secureserver.net", 25);
MySMTPClient.Credentials = new NetworkCredential("<MailID>", "<Password>");
myEmail = new MailMessage(new MailAddress("<sender>"), new MailAddress("<receiver>"));
myEmail.Body = "Email from Windows Azure Application";
myEmail.Subject = "Email from Windows Azure";
try
{
  MySMTPClient.Send(myEmail);
}
catch (Exception ex)
{
  // Display Exception Details
} 

答案 2 :(得分:0)

这很简单:

你必须专注于smtp主机,端口,ssl ...... 将smtp主机更改为: relay-hosting.secureserver.net 并且删除 端口 ssl ,这就是所有...... 不要使用smtp端口和smtp ssl true或false

    var fromAddress = "mailfrom@yourdomain";
    // any address where the email will be sending
    var toAddress = "mailto@yourdomain";
    //Password of your mail address
    const string fromPassword = "******";
    // Passing the values and make a email formate to display
    string subject = TextBox1.Text.ToString();
    string body = "From: " + TextBox2.Text + "\n";
    body += "Email: " + TextBox3.Text + "\n";
    body += "Subject: " + TextBox4.Text + "\n";
    body += "Message: \n" + TextBox5.Text + "\n";
    // smtp settings
    var smtp = new System.Net.Mail.SmtpClient();
    {
        smtp.Host = "relay-hosting.secureserver.net";
**//Warning Delete =>//smtp.Port = 80;**
**//Warning Delete =>//smtp.EnableSsl = false;**
        smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.Timeout = 20000;
    }
    // Passing values to smtp object
    smtp.Send(fromAddress, toAddress, subject, body);

适用于目标Framework 4.0上的Godaddy Windows Host