ウェブサイトのアカウント登録のために、GmailアカウントからC#経由でメールを送信しようとしています。
いくつかの方法を試しましたが、同じ例外が引き続き表示されます。System.Net.Mail.Smtp例外-接続がタイムアウトしました。
これは私がWeb.configファイルに含めたものです:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network"
from="Writely <[email protected]>">
<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);
}
私は何かを逃しているのですか、それとも何か間違っているのですか?これはスタックオーバーフローに関する他の質問でこれを行うための良い方法であると読んだので、ここで何が問題なのか本当にわかりません。
ご協力いただきありがとうございます :)
使用する設定をSmtpClientに指示する必要があります。 Web.Configファイルからこの情報を自動的に読み取ることはありません。
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 465);
smtp.Credentials = new NetworkCredential("[email protected]", "***");
smtp.EnableSsl = true;
smtp.Send(mail);
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");
私はまったく同じ問題を抱えていましたが、ポート番号を465から587に切り替えた後に解決しました。
「メール確認」、「パスワード回復」、「メール送信」で問題が発生しましたが、3つすべての問題が解決しました:)。
かなり古い投稿であることは知っていますが、私は通常、新しい質問をする代わりに、既存の投稿を使用して回答を見つけます。
助けてくれてありがとう。
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);