Webアプリケーションを使用してメールを送信する必要があります。 The SMTP server requires a secure connection or the client was not authenticated. The server response was:
を示す以下のコードを考えると
5.7.57 SMTP;クライアントは、MAIL FROM中に匿名メールを送信するために認証されませんでした。
適切な解決策を見つけるのを助けてください。ありがとうございました。
コード:
protected void btnsubmit_Click(object sender, EventArgs e)
{
Ticket_MailTableAdapters.tbl_TicketTableAdapter tc;
tc = new Ticket_MailTableAdapters.tbl_TicketTableAdapter();
DataTable dt = new DataTable();
dt = tc.GetEmail(dpl_cate.SelectedValue);
foreach (DataRow row in dt.Rows)
{
string eml = (row["Emp_Email"].ToString());
var fromAddress = "emailAddress";
var toAddress = eml;
const string fromPassword = "*****";
string body = "Welcome..";
// smtp settings
var smtp = new System.Net.Mail.SmtpClient();
{
smtp.Host = "smtp.office365.com";
smtp.Port = 587;
smtp.EnableSsl = true;
smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
smtp.UseDefaultCredentials = false;
smtp.Timeout = 600000;
}
// Passing values to smtp object
smtp.Send(fromAddress, toAddress, subject, body);
}
}
}
私は優れたプログラマーではないかもしれませんが、Fromアドレスを適切な電子メールアドレスではない「emailAddress」として渡しているようです。Office365の場合、fromはOffice365システムの実際のアドレスである必要があります。
電子メールアドレスを送信元およびOffice 365パスワードとしてハードコーディングした場合、それを検証できます。もちろんそこに放置しないでください。
@ Reshma-あなたがまだそれを理解していない場合、ここに私が試したものの下にあり、同じ問題を解決しました。
設定したNetworkCredentialsが正しいことを確認してください。たとえば、私の場合、オフィスSMTPであったため、ユーザーIDはNetworkCredentialで実際の電子メールIDではなくドメイン名とともに使用する必要がありました。
最初に「UseDefaultCredentials」をfalseに設定してから、Credentialsを設定する必要があります。その後、「UseDefaultCredentials」を設定すると、NetworkCredentialがヌルにリセットされます。
それが役に立てば幸い。
私はこれにあまりにも多くの時間を費やし、解決策は非常に簡単でした。 「MX」をホストおよびポート25として使用する必要がありました。
var sClient = new SmtpClient("domain-com.mail.protection.Outlook.com");
var message = new MailMessage();
sClient.Port = 25;
sClient.EnableSsl = true;
sClient.Credentials = new NetworkCredential("user", "password");
sClient.UseDefaultCredentials = false;
message.Body = "Test";
message.From = new MailAddress("[email protected]");
message.Subject = "Test";
message.CC.Add(new MailAddress("[email protected]"));
sClient.Send(message);
私は同じ問題を抱えています。
解決したドメインを追加します。
mySmtpClient.Credentials = New System.Net.NetworkCredential("[email protected]", "password", "domain.com")
上記のコメントに記載されている主な2つの理由
UseDefaultCredentials
をfalseに設定してから、資格情報を設定するか、smtp.UseDefaultCredentials = false;
をsmtp.Credentials assignment
の上に配置する必要があります。これは古い質問ですが、これはこのエラーに対するgoogleの最初の結果であるため、この問題の進行状況を更新すると思いました。
私もこの問題に何時間も費やしました。最終的に、コードが電子メールの送信に成功するまで、Office 365アカウントのパスワードを数回変更する必要がありました。
コードを変更する必要はありませんでした。
Office 365を使用している場合は、次の手順を実行します。
それが役に立てば幸い!
私の場合、Office 365のFROMアカウントで2要素認証が有効になりました。無効にすると、メールは正常に送信されました。
Office365のパスワードを変更してからテストメールを送信しようとしたところ、私にとって魅力的なものでした。
フロントエンド(データベースメールオプション)と設定をsmtp.office365.comポート番号587として使用し、安全な接続オプションをチェックしました。基本認証を使用して、資格情報を保存します。これが誰かに役立つことを願っています。
プロパティを追加した後に作業を開始しました:
mail.smtp.starttls.enable=true
を使用して:
mail.smtp.Host=smtp.office365.com
mail.smtp.port=587
mail.transport.protocol=smtp
mail.smtp.auth=true
mail.smtp.starttls.enable=true
[email protected]
mail.smtp.password=xxx
[email protected]
User defauilt credencialsを「True」に設定しますsmtp.UseDefaultCredentials = True;
その前に、資格情報を入力しますsmtp.Credentials = new NetworkCredential(fromAddress、fromPassword);
これはうまくいくはずです
私の場合、2つの文字列(to、from)を受け取り、同じエラーを受け取るMailMessageコンストラクタを使用していました。デフォルトのコンストラクターを使用し、MailAddressオブジェクトをMailMessageのToプロパティに追加すると、正常に機能しました。