Поштові розсилки через Gmail.
Новий фреймворк під MVC я буду також потроху публікувати. На цієї сторінці я покажу, як робити поштові розсилки через GMAIL.
По-перше, у самому GMAIL потрібно зробити дві важливі налаштування:
- Less Security
- Unlock Captcha
По-друге, розсилки можно зробити тільки 99 листів на добу.
І ось новий код, який трохи відрізняється від кода, яким робиться звернення до звичайного почтовика.
1: Imports Microsoft.VisualBasic
2: Imports System, System.Web
3:
4: Public Class GMail
5: Public Shared Sub SendMail(ByVal ToAddr As String, ByVal Subject As String, ByVal Body As String)
6: Dim SendedMailID As Integer
7: Dim db1 As New OCMRDataContext
8: Dim Result = (db1.AddMail(ToAddr, Subject, Body)).ToList
9: SendedMailID = Result(0).MailId
10: Dim MailClient As New System.Net.Mail.SmtpClient()
11: Try
12: Dim Email As New System.Net.Mail.MailMessage(System.Configuration.ConfigurationManager.AppSettings("SMTP_FromAddr"), ToAddr, Subject, Body)
13: Email.IsBodyHtml = True
14: MailClient.Host = System.Configuration.ConfigurationManager.AppSettings("SMTP_Server")
15: MailClient.Port = System.Configuration.ConfigurationManager.AppSettings("SMTP_Port")
16: MailClient.EnableSsl = CBool(System.Configuration.ConfigurationManager.AppSettings("SMTP_SSL"))
17: MailClient.DeliveryMethod = Net.Mail.SmtpDeliveryMethod.Network
18: MailClient.UseDefaultCredentials = True
19: MailClient.Credentials = New System.Net.NetworkCredential(System.Configuration.ConfigurationManager.AppSettings("SMTP_Login"), System.Configuration.ConfigurationManager.AppSettings("SMTP_Pass"))
20: MailClient.Send(Email)
21: Catch ex As Exception
22: Dim db2 As New OCMRDataContext
23: db2.AddMailError(SendedMailID, ex.Message)
24: End Try
25: End Sub
26: End Class
Цей код користуеться ось таким конфігом сайту:
1: <?xml version="1.0"?>
2: <configuration>
3: <appSettings>
4: <!-- Эти адреса нужны для отправки почты юзеру -->
5: <add key="SMTP_Login" value="byrgas275@gmail.com"/>
6: <add key="SMTP_Pass" value="1111111111"/>
7: <add key="SMTP_Server" value="smtp.gmail.com"/>
8: <add key="SMTP_Port" value="587"/>
9: <add key="SMTP_SSL" value="True"/>
10: <add key="SMTP_FromAddr" value="byrgas275@gmail.com"/>
11: <!-- Этот адрес нужен для активации логина и сброса пароля -->
12: <add key="HostingURL" value="localhost:52796"/>
13: <add key="NameURL" value="Open Community Media Room"/>
14: ....
Скористуватися класом MAIL можна якось так:
Саме цім кодом і сформовано листа, що ви бачите на титулі сторінці. А база у моему новому фреймворку під MVC залишилась також сама, як під ASP.NET :
1: CREATE TABLE [dbo].[SendMail](
2: [i] [int] IDENTITY(1,1) NOT NULL,
3: [Date] [datetime] NOT NULL,
4: [ToAddr] [nvarchar](256) NOT NULL,
5: [Subject] [nvarchar](500) NOT NULL,
6: [Body] [nvarchar](max) NOT NULL,
7: [Error] [nvarchar](max) NULL
8: ) ON [PRIMARY]
1: ALTER PROCEDURE [dbo].[AddMail]
2: @ToAddr nvarchar(256),
3: @Subject nvarchar(500),
4: @Body nvarchar(max)
5: as
6: INSERT [SendMail]([Date],[ToAddr],[Subject],[Body])
7: VALUES (GetDate(), @ToAddr, @Subject, @Body)
8: select SCOPE_IDENTITY() as MailId
1: ALTER PROCEDURE [dbo].[AddMailError]
2: @i int,
3: @Error nvarchar(max)
4: as
5: update [SendMail] set [Error]=@Error where I=@i
Як бачите, все не просто, а дуже просто, якщо все це розуміти. На наступній сторінці я розповім як правильно сформувати незламний Security Token для зміну паролю сайту, який я тепер теж роблю трошки інакше, ніж раніше - Формування безопасного токена для зміни паролю.