質問編集履歴

6

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

2020/04/06 02:40

投稿

anpen
anpen

スコア8

test CHANGED
File without changes
test CHANGED
@@ -17,107 +17,3 @@
17
17
  publishしても送信できるようにするにはどのようにすればよいかご教授いただければ
18
18
 
19
19
  幸いにございます。
20
-
21
-
22
-
23
-
24
-
25
- ```
26
-
27
- public async Task FunctionHandler(SQSEvent evnt, ILambdaContext context)
28
-
29
- {
30
-
31
- foreach(var message in evnt.Records)
32
-
33
- {
34
-
35
- await ProcessMessageAsync(message, context);
36
-
37
- }
38
-
39
- }
40
-
41
-
42
-
43
- private async Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context)
44
-
45
- {
46
-
47
- context.Logger.LogLine($"Processed message {message.Body}");
48
-
49
-
50
-
51
- await MailKitSendMmail();
52
-
53
-
54
-
55
- await Task.CompletedTask;
56
-
57
- }
58
-
59
-
60
-
61
- public async Task MailKitSendMmail()
62
-
63
- {
64
-
65
- String FROM = "gmailメールアドレス";
66
-
67
- String FROMNAME = "aaaaa";
68
-
69
- String TO = "送信先メールアドレス";
70
-
71
- String SMTP_USERNAME = "gmailアカウント";
72
-
73
- String SMTP_PASSWORD = "gmailパスワード";
74
-
75
- String HOST = "smtp.gmail.com";
76
-
77
- int PORT = 587;
78
-
79
-
80
-
81
- String SUBJECT = "MailKitテストメール件名";
82
-
83
- String BODY = "メール内容MailKit";
84
-
85
-
86
-
87
- var smtp = new MailKit.Net.Smtp.SmtpClient();
88
-
89
- await smtp.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
90
-
91
- await smtp.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
92
-
93
-
94
-
95
- var mail = new MimeKit.MimeMessage();
96
-
97
- var builder = new MimeKit.BodyBuilder();
98
-
99
-
100
-
101
- mail.From.Add(new MimeKit.MailboxAddress("", FROM));
102
-
103
- mail.To.Add(new MimeKit.MailboxAddress("", TO));
104
-
105
- mail.Subject = SUBJECT;
106
-
107
- builder.TextBody = BODY + " by gmail";
108
-
109
- mail.Body = builder.ToMessageBody();
110
-
111
-
112
-
113
- smtp.Send(mail);
114
-
115
- smtp.Disconnect(true);
116
-
117
-
118
-
119
- }
120
-
121
-
122
-
123
- ```

5

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

2020/04/06 02:40

投稿

anpen
anpen

スコア8

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

4

誤字修正

2020/04/02 07:16

投稿

anpen
anpen

スコア8

test CHANGED
File without changes
test CHANGED
@@ -112,8 +112,6 @@
112
112
 
113
113
  smtp.Disconnect(true);
114
114
 
115
- #endif
116
-
117
115
 
118
116
 
119
117
  }

3

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

2020/04/02 06:59

投稿

anpen
anpen

スコア8

test CHANGED
File without changes
test CHANGED
@@ -56,9 +56,7 @@
56
56
 
57
57
 
58
58
 
59
- public static async Task MailKitSendMmail()
59
+ public async Task MailKitSendMmail()
60
-
61
- // public static async Task MailKitSendMmail(string email, string subject, string message)
62
60
 
63
61
  {
64
62
 
@@ -84,33 +82,11 @@
84
82
 
85
83
 
86
84
 
87
-
88
-
89
- #if false
90
-
91
- var smtp = new System.Net.Mail.SmtpClient();
92
-
93
- smtp.Host = HOST; //SMTPサーバ
94
-
95
- smtp.Port = PORT; //SMTPポート
96
-
97
- smtp.EnableSsl = true;
98
-
99
- smtp.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD); //認証
100
-
101
- var msg = new System.Net.Mail.MailMessage(FROM, TO, SUBJECT, BODY);
102
-
103
- smtp.Send(msg); //メール送信
104
-
105
- #else
106
-
107
-
108
-
109
85
  var smtp = new MailKit.Net.Smtp.SmtpClient();
110
86
 
111
- smtp.Connect("smtp.gmail.com", PORT, SecureSocketOptions.Auto);
87
+ await smtp.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
112
88
 
113
- smtp.Authenticate(SMTP_USERNAME, SMTP_PASSWORD);
89
+ await smtp.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
114
90
 
115
91
 
116
92
 

2

タグを追加しました

2020/04/02 06:57

投稿

anpen
anpen

スコア8

test CHANGED
File without changes
test CHANGED
File without changes

1

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

2020/04/02 01:11

投稿

anpen
anpen

スコア8

test CHANGED
@@ -1 +1 @@
1
- AWS Lambda関数からSESメール送信方法について
1
+ AWS Lambda関数からMailKitでのメール送信方法について
test CHANGED
@@ -1,6 +1,6 @@
1
1
  お世話になっております、c#(VisualStudio2019,Mailkit,.netcore2.1)で
2
2
 
3
- 作成したlambda関数からAmazon SESを使用してメール送信を行いたいです。
3
+ 作成したlambda関数からメール送信を行いたいです。
4
4
 
5
5
  現状、Mock Lambda Test Toolを使用し実行すると送信できるのですが、
6
6
 
@@ -10,9 +10,9 @@
10
10
 
11
11
  タイムアウトしてしまいます。
12
12
 
13
- Lambda関数、SES共にus-east-1リージョンに配置しております。
13
+ 送信にgmailを使用しておりひとず「安全性の低いアプリの許可: 有効」にしています。
14
14
 
15
- publishしても送信できるようにるにはどのようにすればよいかご教授いただければ
15
+ publishしても送信できるようにるにはどのようにすればよいかご教授いただければ
16
16
 
17
17
  幸いにございます。
18
18
 
@@ -62,17 +62,17 @@
62
62
 
63
63
  {
64
64
 
65
- String FROM = "SESでverifyしたメールアドレス";
65
+ String FROM = "gmailメールアドレス";
66
66
 
67
67
  String FROMNAME = "aaaaa";
68
68
 
69
- String TO = "SESでverifyしたメールアドレス";
69
+ String TO = "送信先メールアドレス";
70
70
 
71
- String SMTP_USERNAME = "SESのSMTP Settingsで作成したusername";
71
+ String SMTP_USERNAME = "gmailアカウント";
72
72
 
73
- String SMTP_PASSWORD = "SESのSMTP Settingsで作成したpassword";
73
+ String SMTP_PASSWORD = "gmailパスワード";
74
74
 
75
- String HOST = "email-smtp.us-east-1.amazonaws.com";
75
+ String HOST = "smtp.gmail.com";
76
76
 
77
77
  int PORT = 587;
78
78
 
@@ -84,63 +84,61 @@
84
84
 
85
85
 
86
86
 
87
- #if DEBUG
88
87
 
89
- ServicePointManager.ServerCertificateValidationCallback +=
90
88
 
89
+ #if false
90
+
91
+ var smtp = new System.Net.Mail.SmtpClient();
92
+
93
+ smtp.Host = HOST; //SMTPサーバ
94
+
95
+ smtp.Port = PORT; //SMTPポート
96
+
97
+ smtp.EnableSsl = true;
98
+
99
+ smtp.Credentials = new System.Net.NetworkCredential(SMTP_USERNAME, SMTP_PASSWORD); //認証
100
+
101
+ var msg = new System.Net.Mail.MailMessage(FROM, TO, SUBJECT, BODY);
102
+
103
+ smtp.Send(msg); //メール送信
104
+
105
+ #else
106
+
107
+
108
+
109
+ var smtp = new MailKit.Net.Smtp.SmtpClient();
110
+
111
+ smtp.Connect("smtp.gmail.com", PORT, SecureSocketOptions.Auto);
112
+
113
+ smtp.Authenticate(SMTP_USERNAME, SMTP_PASSWORD);
114
+
115
+
116
+
117
+ var mail = new MimeKit.MimeMessage();
118
+
119
+ var builder = new MimeKit.BodyBuilder();
120
+
121
+
122
+
123
+ mail.From.Add(new MimeKit.MailboxAddress("", FROM));
124
+
125
+ mail.To.Add(new MimeKit.MailboxAddress("", TO));
126
+
127
+ mail.Subject = SUBJECT;
128
+
91
- (sender, cert, chain, sslPolicyErrors) => true;
129
+ builder.TextBody = BODY + " by gmail";
130
+
131
+ mail.Body = builder.ToMessageBody();
132
+
133
+
134
+
135
+ smtp.Send(mail);
136
+
137
+ smtp.Disconnect(true);
92
138
 
93
139
  #endif
94
140
 
95
- // メールのオブジェクトを作成する
96
141
 
97
- var emailMessage = new MimeMessage();
98
-
99
- // メール送信元の名前とメールアドレスを指定する
100
-
101
- emailMessage.From.Add(new MailboxAddress(FROMNAME, FROM));
102
-
103
- // メール送信先を指定する
104
-
105
- emailMessage.To.Add(new MailboxAddress("", TO));
106
-
107
- // メールの件名を設定する
108
-
109
- emailMessage.Subject = SUBJECT;
110
-
111
- // メールの本文を指定する(テキストメッセージ)
112
-
113
- emailMessage.Body = new TextPart("plain") { Text = BODY };
114
-
115
- using (var client = new SmtpClient())
116
-
117
- {
118
-
119
- // SMTPサーバに接続する(SSL有効)
120
-
121
- #if DEBUG
122
-
123
- await client.ConnectAsync(HOST, PORT, SecureSocketOptions.StartTls);
124
-
125
- #else
126
-
127
- await client.ConnectAsync (HOST, PORT, SecureSocketOptions.SslOnConnect);
128
-
129
- #endif
130
-
131
- // SMTPサーバで認証する(IDとパスワード)
132
-
133
- await client.AuthenticateAsync(SMTP_USERNAME, SMTP_PASSWORD);
134
-
135
- // メールを送信する
136
-
137
- await client.SendAsync(emailMessage);
138
-
139
- // SMTPサーバとの接続を切る
140
-
141
- await client.DisconnectAsync(true);
142
-
143
- }
144
142
 
145
143
  }
146
144