teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

ソースの問題ではなかったので削除

2020/04/06 02:40

投稿

anpen
anpen

スコア8

title CHANGED
File without changes
body CHANGED
@@ -7,56 +7,4 @@
7
7
  smtpサーバーへの接続でタイムアウトしてしまいます。
8
8
  gmailに関してはひとまず「安全性の低いアプリの許可: 有効」にしてテストしています。
9
9
  publishしても送信できるようにするにはどのようにすればよいかご教授いただければ
10
- 幸いにございます。
10
+ 幸いにございます。
11
-
12
-
13
- ```
14
- public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)
15
- {
16
- foreach(var message in evnt.Records)
17
- {
18
- await ProcessMessageAsync(message, context);
19
- }
20
- }
21
-
22
- private async Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context)
23
- {
24
- context.Logger.LogLine($"Processed message {message.Body}");
25
-
26
- await MailKitSendMmail();
27
-
28
- await Task.CompletedTask;
29
- }
30
-
31
- public async Task MailKitSendMmail()
32
- {
33
- String FROM = "gmailメールアドレス";
34
- String FROMNAME = "aaaaa";
35
- String TO = "送信先メールアドレス";
36
- String SMTP_USERNAME = "gmailアカウント";
37
- String SMTP_PASSWORD = "gmailパスワード";
38
- String HOST = "smtp.gmail.com";
39
- int PORT = 587;
40
-
41
- String SUBJECT = "MailKitテストメール件名";
42
- String BODY = "メール内容MailKit";
43
-
44
- var smtp = new MailKit.Net.Smtp.SmtpClient();
45
- await smtp.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
46
- await smtp.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
47
-
48
- var mail = new MimeKit.MimeMessage();
49
- var builder = new MimeKit.BodyBuilder();
50
-
51
- mail.From.Add(new MimeKit.MailboxAddress("", FROM));
52
- mail.To.Add(new MimeKit.MailboxAddress("", TO));
53
- mail.Subject = SUBJECT;
54
- builder.TextBody = BODY + " by gmail";
55
- mail.Body = builder.ToMessageBody();
56
-
57
- smtp.Send(mail);
58
- smtp.Disconnect(true);
59
-
60
- }
61
-
62
- ```

5

送信を試した方法を追記(SES,gmail)

2020/04/06 02:40

投稿

anpen
anpen

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,10 +1,11 @@
1
1
  お世話になっております、c#(VisualStudio2019,Mailkit,.netcore2.1)で
2
2
  作成したlambda関数からメール送信を行いたいです。
3
- 現状、Mock Lambda Test Toolを使用し実行すると送信できるのですが
3
+ 現状、Mock Lambda Test Tool実行すると、AmazonSESのアカウント設定だと
4
+ 送信できるのですが、gmail設定だと送信できません。
4
5
  Publish to AWS Lambda(ソリューションエクスプローラーで該当プロジェクト上で
5
- 右クリックメニューで出てくる)を使用し実行すると、smtpサーバーへの接続で
6
+ 右クリックメニューで出てくる)を使用し実行すると、AmazonSEE,gmailともに
6
- タイムアウトしてしまいます。
7
+ smtpサーバーへの接続でタイムアウトしてしまいます。
7
- 送信にgmailを使用しておりひとまず「安全性の低いアプリの許可: 有効」にしています。
8
+ gmailに関してひとまず「安全性の低いアプリの許可: 有効」にしてテストしています。
8
9
  publishしても送信できるようにするにはどのようにすればよいかご教授いただければ
9
10
  幸いにございます。
10
11
 

4

誤字修正

2020/04/02 07:16

投稿

anpen
anpen

スコア8

title CHANGED
File without changes
body CHANGED
@@ -55,7 +55,6 @@
55
55
 
56
56
  smtp.Send(mail);
57
57
  smtp.Disconnect(true);
58
- #endif
59
58
 
60
59
  }
61
60
 

3

Connect,AuthenticateをConnectAsync,AuthenticateAsyncに変更(状況改善せず)

2020/04/02 06:59

投稿

anpen
anpen

スコア8

title CHANGED
File without changes
body CHANGED
@@ -27,8 +27,7 @@
27
27
  await Task.CompletedTask;
28
28
  }
29
29
 
30
- public static async Task MailKitSendMmail()
30
+ public async Task MailKitSendMmail()
31
- // public static async Task MailKitSendMmail(string email, string subject, string message)
32
31
  {
33
32
  String FROM = "gmailメールアドレス";
34
33
  String FROMNAME = "aaaaa";
@@ -41,20 +40,9 @@
41
40
  String SUBJECT = "MailKitテストメール件名";
42
41
  String BODY = "メール内容MailKit";
43
42
 
44
-
45
- #if false
46
- var smtp = new System.Net.Mail.SmtpClient();
47
- smtp.Host = HOST; //SMTPサーバ
48
- smtp.Port = PORT; //SMTPポート
49
- smtp.EnableSsl = true;
50
- smtp.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD); //認証
51
- var msg = new System.Net.Mail.MailMessage(FROM, TO, SUBJECT, BODY);
52
- smtp.Send(msg); //メール送信
53
- #else
54
-
55
43
  var smtp = new MailKit.Net.Smtp.SmtpClient();
56
- smtp.Connect("smtp.gmail.com", PORT, SecureSocketOptions.Auto);
44
+ await smtp.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
57
- smtp.Authenticate(SMTP_USERNAME, SMTP_PASSWORD);
45
+ await smtp.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
58
46
 
59
47
  var mail = new MimeKit.MimeMessage();
60
48
  var builder = new MimeKit.BodyBuilder();

2

タグを追加しました

2020/04/02 06:57

投稿

anpen
anpen

スコア8

title CHANGED
File without changes
body CHANGED
File without changes

1

SESでの送信ではなくLambdaでのMailKit使用方法に変更しました

2020/04/02 01:11

投稿

anpen
anpen

スコア8

title CHANGED
@@ -1,1 +1,1 @@
1
- AWS Lambda関数からSESメール送信方法について
1
+ AWS Lambda関数からMailKitでのメール送信方法について
body CHANGED
@@ -1,11 +1,11 @@
1
1
  お世話になっております、c#(VisualStudio2019,Mailkit,.netcore2.1)で
2
- 作成したlambda関数からAmazon SESを使用してメール送信を行いたいです。
2
+ 作成したlambda関数からメール送信を行いたいです。
3
3
  現状、Mock Lambda Test Toolを使用し実行すると送信できるのですが、
4
4
  Publish to AWS Lambda(ソリューションエクスプローラーで該当プロジェクト上で
5
5
  右クリックメニューで出てくる)を使用し実行すると、smtpサーバーへの接続で
6
6
  タイムアウトしてしまいます。
7
- Lambda関数、SES共us-east-1リージョンに配置しております。
7
+ 送信gmailを使用しておりひとず「安全性の低いアプリの許可: 有効」にしています。
8
- publishしても送信できるようにるにはどのようにすればよいかご教授いただければ
8
+ publishしても送信できるようにるにはどのようにすればよいかご教授いただければ
9
9
  幸いにございます。
10
10
 
11
11
 
@@ -30,46 +30,45 @@
30
30
  public static async Task MailKitSendMmail()
31
31
  // public static async Task MailKitSendMmail(string email, string subject, string message)
32
32
  {
33
- String FROM = "SESでverifyしたメールアドレス";
33
+ String FROM = "gmailメールアドレス";
34
34
  String FROMNAME = "aaaaa";
35
- String TO = "SESでverifyしたメールアドレス";
35
+ String TO = "送信先メールアドレス";
36
- String SMTP_USERNAME = "SESのSMTP Settingsで作成したusername";
36
+ String SMTP_USERNAME = "gmailアカウント";
37
- String SMTP_PASSWORD = "SESのSMTP Settingsで作成したpassword";
37
+ String SMTP_PASSWORD = "gmailパスワード";
38
- String HOST = "email-smtp.us-east-1.amazonaws.com";
38
+ String HOST = "smtp.gmail.com";
39
39
  int PORT = 587;
40
40
 
41
41
  String SUBJECT = "MailKitテストメール件名";
42
42
  String BODY = "メール内容MailKit";
43
43
 
44
+
44
- #if DEBUG
45
+ #if false
45
- ServicePointManager.ServerCertificateValidationCallback +=
46
- (sender, cert, chain, sslPolicyErrors) => true;
47
- #endif
48
- // メールのオブジェクトを作成する
49
- var emailMessage = new MimeMessage();
50
- // メール送信元の名前とメールアドレスを指定する
51
- emailMessage.From.Add(new MailboxAddress(FROMNAME, FROM));
52
- // メール送信先を指定する
53
- emailMessage.To.Add(new MailboxAddress("", TO));
54
- // メールの件名を設定する
55
- emailMessage.Subject = SUBJECT;
56
- // メールの本文を指定する(テキストメッセージ)
57
- emailMessage.Body = new TextPart("plain") { Text = BODY };
58
- using (var client = new SmtpClient())
46
+ var smtp = new System.Net.Mail.SmtpClient();
59
- {
60
- // SMTPサーバに接続する(SSL有効)
47
+ smtp.Host = HOST; //SMTPサーバ
48
+ smtp.Port = PORT; //SMTPポート
61
- #if DEBUG
49
+ smtp.EnableSsl = true;
50
+ smtp.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD); //認証
62
- await client.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
51
+ var msg = new System.Net.Mail.MailMessage(FROM, TO, SUBJECT, BODY);
52
+ smtp.Send(msg); //メール送信
63
53
  #else
54
+
55
+ var smtp = new MailKit.Net.Smtp.SmtpClient();
64
- await client.ConnectAsync (HOST, PORT, SecureSocketOptions.SslOnConnect);
56
+ smtp.Connect("smtp.gmail.com", PORT, SecureSocketOptions.Auto);
57
+ smtp.Authenticate(SMTP_USERNAME, SMTP_PASSWORD);
58
+
59
+ var mail = new MimeKit.MimeMessage();
60
+ var builder = new MimeKit.BodyBuilder();
61
+
62
+ mail.From.Add(new MimeKit.MailboxAddress("", FROM));
63
+ mail.To.Add(new MimeKit.MailboxAddress("", TO));
64
+ mail.Subject = SUBJECT;
65
+ builder.TextBody = BODY + " by gmail";
66
+ mail.Body = builder.ToMessageBody();
67
+
68
+ smtp.Send(mail);
69
+ smtp.Disconnect(true);
65
70
  #endif
66
- // SMTPサーバで認証する(IDとパスワード)
71
+
67
- await client.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
68
- // メールを送信する
69
- await client.SendAsync(emailMessage);
70
- // SMTPサーバとの接続を切る
71
- await client.DisconnectAsync(true);
72
- }
73
72
  }
74
73
 
75
74
  ```