2017-09-29 19 views
0

私はAzureのSmtpClientメソッドとMailMessageメソッドを使用してASP.NET MVCアプリケーションにSendGridを統合しようとしています。SendGrid SMTP統合の問題

コード:SendGridサイト上の文書avlb 1として

System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed. 

:私はAzureのVM上でC#コンソールアプリケーションやASP.NET MVCアプリケーションの両方から、この問題で終わる

MailMessage message = new MailMessage(); 
message.IsBodyHtml = true; 
message.Subject = "Subject"; 
message.To.Add("[email protected]"); 
message.Body = "Body"; 
message.From = new MailAddress("[email protected]", "From Name"); 

SmtpClient client = new SmtpClient("smtp.sendgrid.net"); 
client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential("??", "SG.******"); 
client.DeliveryMethod = SmtpDeliveryMethod.Network; 
client.Port = 587; // I have tried with 25 and 2525 
client.Timeout = 99999; 
client.EnableSsl = false; 

client.Send(message); 

https://sendgrid.com/docs/Classroom/Basics/Email_Infrastructure/recommended_smtp_settings.html

ユーザー名とパスワードの設定は次のとおりです。SMTPユーザー名に「apikey」という文字列を使用し、パスワードにAPIキーを使用します。

私が試してみました - 私は彼らのポータルにログインしていると

  1. SendGridユーザー名

  2. このページからAPIキーhttps://app.sendgrid.com/settings/api_keys

  3. であるSGの*で始まるパスワードサポートチームごとに

何が欠けていますか、どのUserName/APIKeyを使用する必要がありますか?

Tx!

答えて

0

はあなたの説明によると、私はあなたが私はあなたが役割を追加する手順の下に従うことができる示唆ポート587

ためのVMアウトバウンド役割を追加することはできませんね。

azure vmポータルでネットワークを検索します。

enter image description here

その後アウトバウンドルールを追加見つけます。アウトバウンドの役割に

enter image description here

3.Add 587ポート。

enter image description here


更新:

私はあなたがこれを行うにはsendgrid SDKを使用しようとする可能性が示唆されました。

私はテストコンソールアプリケーションを作成しました。これは私の側でうまくいきます。

ライブラリ:以下のようにSendGrid

コード:

 var client = new SendGridClient("sendgridkey"); 
     var from = new EmailAddress("send email address", "Example User"); 
     var subject = "Sending with SendGrid is Fun"; 
     var to = new EmailAddress("To email address", "Example User"); 
     var plainTextContent = $"Name : aaaa"; 
     var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>"; 
     var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); 
     client.SendEmailAsync(msg).Wait(); 

     int i = 0; 
+0

このような送信ルールはないため、ポートの問題ではありません。 – AaBa

+0

私はVMにテストデモを書いています。うまくいきます。私のコードを試して、もう一度試してみることをお勧めします。 –

+0

こんにちは、ありがとうございました。私は、SMTPアドレス、ユーザーID、パスワード、およびポートでテーブルを構成したので、コードを修正する贅沢はなかった。 SMTPは唯一の方法でした。キーはユーザー名として "apikey"を使用することでした。 – AaBa

1

リンクは言う:SMTPのユーザー名の文字列「APIキー」を使用し、パスワードのためのあなたのAPIキーを使用しています。

https://sendgrid.com/docs/Classroom/Basics/Email_Infrastructure/recommended_smtp_settings.html

ユーザ名があると仮定した"APIキー"なく、実際の "APIキーまたはAPI名" "APIキー"(顔手のひら)を追加

client.Credentials = new NetworkCredential("apikey", 
              "<Your API Key which statats with SG.*>"); 

私の問題は解決しました。