簡體   English   中英

從web.config發送帶有憑據的電子郵件時出錯

[英]Error while sending email with credentials from web.config

我正在通過ASP.NET MVC開發一個網站。 我在IdentityConfig.cs具有此功能:

public Task SendAsync(IdentityMessage message)
{
    SmtpClient client = new SmtpClient();
    var msg = new MailMessage();
    msg.From = new MailAddress("info@mywebsite.com");
    msg.To.Add(message.Destination);
    msg.Subject = message.Subject;
    msg.Body = message.Body;
    client.Host = "mywebsite.com";
    client.Port = 25; 
    client.Credentials = new
        System.Net.NetworkCredential("info@mywebsite.com", "mypassword");
    return client.SendMailAsync(msg);
}

我在IIS 8中設置了SMTP服務,此功能運行良好。 問題是當我在Web.config配置SMTP憑據並嘗試發送電子郵件時。 Web.config MailSettings部分如下:

<system.net>
    <mailSettings>
      <smtp>
        <network host="mywebsite.com"
                 port="25" userName="info@mywebsite.com" password="mypassword" />
      </smtp>
    </mailSettings>
</system.net>

並且新的SendAsync函數是:

public Task SendAsync(IdentityMessage message)
{
    SmtpClient client = new SmtpClient();
    var msg = new MailMessage();
    msg.From = new MailAddress("info@mywebsite.com");
    msg.To.Add(message.Destination);
    msg.Subject = message.Subject;
    msg.Body = message.Body;
    return client.SendMailAsync(msg);
}

但是在我的控制器中運行此命令時,發生以下錯誤:

命令順序錯誤。 服務器響應為:嘗試發送到非本地電子郵件地址時,此郵件服務器需要身份驗證。 請檢查您的郵件客戶端設置,或與管理員聯系以驗證是否為此服務器定義了域或地址。

可能是什么原因?

嘗試將defaultCredentials添加為false

  <network
          clientDomain="mywebsite.com"
          defaultCredentials="false"
          enableSsl="true"
          host="smtp.gmail.com"
          port="587"
          userName="sender@mywebsite.it" password="xxxxxxx"
        />

請注意,對於某些服務器(例如gmail),該message.From發件人需要與用戶名匹配

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM