web-dev-qa-db-ja.com

Gmail SMTP C#接続タ​​イムアウトからのメールの送信

ウェブサイトのアカウント登録のために、GmailアカウントからC#経由でメールを送信しようとしています。

いくつかの方法を試しましたが、同じ例外が引き続き表示されます。System.Net.Mail.Smtp例外-接続がタイムアウトしました。

これは私がWeb.configファイルに含めたものです:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" 
              from="Writely &lt;[email protected]&gt;">
            <network Host="smtp.gmail.com" 
                     port="465" 
                     enableSsl="true" 
                     defaultCredentials="false" 
                     userName="[email protected]" 
                     password="******" />
        </smtp>
    </mailSettings>
</system.net>

ここで、writelyは私のウェブサイトの名前であり、mrbk.writely @ gmail.comは私がメールを送信したいアカウントです。

次に、アカウントコントローラーで、データベースに接続してユーザーをテーブルに保存するときに、MailMessageオブジェクトを作成し、次の方法でメールを同じにしようとしています。

using (DBConnection conn = new DBConnection())
{
       conn.UserInfoes.Add(userInfo);
       conn.SaveChanges();

       MailMessage mail = new MailMessage();
       mail.From = new MailAddress("[email protected]");
       mail.To.Add("[email protected]");
       mail.Subject = "Welcome to Writely";
       mail.Body = "Test content";

       SmtpClient smtp = new SmtpClient();
       smtp.Send(mail);
}

私は何かを逃しているのですか、それとも何か間違っているのですか?これはスタックオーバーフローに関する他の質問でこれを行うための良い方法であると読んだので、ここで何が問題なのか本当にわかりません。

ご協力いただきありがとうございます :)

11
Bernice

使用する設定をSmtpClientに指示する必要があります。 Web.Configファイルからこの情報を自動的に読み取ることはありません。

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("[email protected]", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
6
Jason Watkins

gmailには認証が必要です:

Outgoing Mail (SMTP) Server
requires TLS or SSL: smtp.gmail.com (use authentication)
Use Authentication: Yes
Port for TLS/STARTTLS: 587
Port for SSL: 465

だから私がしたことは

var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("[email protected]", "mypwd"),
            EnableSsl = true
        };
        client.Send("[email protected]", "[email protected]", "Welcome to Writely", "Test content");
4
Crudler

私はまったく同じ問題を抱えていましたが、ポート番号を465から587に切り替えた後に解決しました。

「メール確認」、「パスワード回復」、「メール送信」で問題が発生しましたが、3つすべての問題が解決しました:)。

かなり古い投稿であることは知っていますが、私は通常、新しい質問をする代わりに、既存の投稿を使用して回答を見つけます。

助けてくれてありがとう。

3
Auguste

私はすでに答えたように ここ

この問題は、Gmailアカウントのセキュリティ構成によっても発生する可能性があります。

正しいポートは587ですが、認証するには、Gmailアカウントの安全性の低いアプリからのアクセスを許可する必要があります。試してみてください ここ

それは私のために働いた、それが役立つことを願っています。

1
dinhokz

Asp.netWebフォーム/ SharePointの例

StringBuilder Body = new StringBuilder();
Body.Append("Your text");

String FromEmail = "you email";
String DisplayNameFromEmailMedico = "display when you receive email";
MailMessage message = new MailMessage();
message.From = new MailAddress(FromEmail, DisplayNameFromEmailMedico);
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "subject that print in email";
message.IsBodyHtml = true;
message.Body = Body.ToString();
SmtpClient client = new SmtpClient();

NetworkCredential myCreds = new NetworkCredential("[email protected]", "key from email smtp", "");
client.EnableSsl = true;
client.Credentials = myCreds;
client.Send(message);
0
Rafael Estevão