2016-12-19 14 views
0

私は青信号を初めて利用しています。私のASP .NET MVCアプリケーションは、紺碧でホストされています。このアプリケーションには電子メール送信機能があります。アプリケーションが紺色に移動すると、電子メール機能は機能しません。私のエラーは、以下のように表示され、エラーをログに記録:誰も私がこの問題を解決するために助けてください電子メール SMTP電子メール送信で問題が発生しました。AzureでホストされているASP .Net mvcアプリケーション

SmtpClient client = new SmtpClient(GetStringValue(EMAIL_CLIENT), GetIntValue(EMAIL_PORT)) 
      { 
       Credentials = new NetworkCredential(GetStringValue(EMAIL_USER_NAME),       GetStringValue(EMAIL_PASSWORD)), 
       EnableSsl = sslOn 
      }; 

client.Host = SettingsManager.GetStringValue("EmailClient");//smtp.gmail.com 
client.Port = SettingsManager.GetIntValue("EmailPort");//587 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 

を送信するために使用

System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. a65sm9218660oih.6 - gsmtp 
    at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) 
    at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode) 
    at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception) 
    at System.Net.Mail.SmtpClient.Send(MailMessage message) 

コードブロックを。ありがとうございました。

+0

gmail smtpを使用していますか? – ViVi

+0

はい。私はGmailのSMTPを使用しています。 –

+0

ViViありがとうございました。私はあなたの答えに従った。今は別の例外をスローします。 System.Net.Mail.SmtpException:メールの送信に失敗しました。 ---> System.IO.IOException:トランスポート接続からデータを読み取れません:net_io_connectionclosed –

答えて

2

でも、私はGmailで同じ問題に直面しました。 Gmailは、あなたのアプリが時間帯が異なるか、アカウントの作成に使用した場所とは異なる場所からログインしようとしているため、紺碧のメールをブロックします。 Gmailの受信トレイを確認すると、ブロックされたログイン試行に関する電子メールが届きます。

ソリューションは、あなたの紺碧サーバーまたは があなたの受信トレイにブロックされた電子メールをチェックし、 デバイスをverfiedするために、そのデバイスを追加からGmailにログインするかのいずれかです。つまり、 のlinkに記載されている「このアクティビティを私のものとして認識します」を選択します。

+0

資格情報を再確認し、ファイアウォールがGmailのsmtpサーバーへのアクセスをブロックしていないことを確認してください。 @bhathiya – ViVi

+0

ありがとうございます。私の紺碧のポータルでは、ファイアウォールの設定を変更するオプションはありません。ファイアウォールが紺碧のsmtpサーバーへのアクセスをブロックしていることを確認する方法はありますか? –

+0

まず、運用サーバーにアクセスする必要があります。プロキシやファイアウォールがあるかどうか調べます。また、紺碧のサーバーからgmail.comにアクセスして、Gmailにアクセスできるようにすることもできます。 – ViVi

2

これは、Azureでホストされていたアプリからの完全なコードです。電子メールはあなたのコードをチェックまずGmailの

MailMessage mail = new MailMessage(); 
mail.From = new MailAddress("[email protected]"); 
mail.Subject = "Subject"; 
mail.IsBodyHtml = true; 
mail.To.Add(new MailAddress(email)); 
mail.Body = "Email body"; 

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); 
smtp.Credentials = new System.Net.NetworkCredential("gmail-email-address", "gmail-password"); 
smtp.EnableSsl = true; 
smtp.Send(mail); 
+0

ありがとう、ジョーラ。私のコードもあなたのコードに似ています。しかし、電子メール機能は動作していません。私のアプリはAzureアプリサービスとしてホストされています。それでも、私たちは空白の試用期間内です。 –

+0

@ bhathiya.mあなたのGmailで転送が有効になっていますか? – Jhorra

0

を通じて細かい送られ、ポート、資格情報、タイムアウトの問題、...

var smtp = new SmtpClient 
{    
    Host = "smtp.gmail.com", 
    Port = 587, 
    EnableSsl = true, 
    DeliveryMethod = SmtpDeliveryMethod.Network, 
    UseDefaultCredentials = false, 
    Credentials = new NetworkCredential(fromAddress.Address, "yourApplicationSpecificPassword"), 
    Timeout = 10000 
}; 
using (var message = new MailMessage(fromAddress, toAddress) 
{     
    IsBodyHtml = true,    
    Subject = subject, 
    Body = body 

}) 
{ 
    smtp.Send(message); 
} 

は、Gmailの設定に続いてあり、2段階認証プロセスを使用する - https://myaccount.google.com/u/3/signinoptions/two-step-verification

とアプリのpasswdのを生成 - https://myaccount.google.com/u/3/apppasswords enter image description here

コード "yourApplicationSpecificPassword"で生成されたパスワードを使用する

幸運!

関連する問題