E-pasta ziņojumu sūtīšana, izmantojot MailKit
vide
- .NET (Net)
-
- .NET 5.0
- Pasta sūtījumsKit
-
- 2.11.1
Sākumā
Iepriekš smtpClient, klase e-pasta ziņojumu sūtīšanai, tika iekļauta kā standarts, bet tagad ir novecojusi specifikāciju dēļ.
Tas nozīmē, ka .NET nav standarta pasta sūtījumu bibliotēkas, tāpēc izmantosiet trešās puses bibliotēku.
Pašlaik ir "MailKit" kā galvenā bibliotēka, tāpēc es vēlos nosūtīt e-pastu, izmantojot šo laiku.
Iepazīšanās ar MailKit
Palaidiet Visual Studio 2019 un izveidojiet jaunu konsoles programmas (.NET) projektu. Ja jūs izmantojat .NET, jums būs zināma brīvība projekta veidā, tāpēc es pare labi pārzināšu detaļas.
Atverot projektu, ar peles labo pogu noklikšķiniet uz Atkarības no risinājumu pārlūka un atlasiet Pārvaldīt NuGet pakotnes.
Noklikšķiniet uz cilnes Pārlūkot un meklēšanas laukā ierakstiet MailKit, lai zemāk redzamajā sarakstā parādītu MailKit.
Sarakstā atlasiet MailKit, pārbaudiet, vai ir atlasīta jaunākā versija, un pēc tam noklikšķiniet uz pogas Instalēt.
Noklikšķiniet uz pogas Labi.
Pārbaudiet, vai pakotnē ir MailKit.
programma
Tālāk norādīts minimālais kods e-pasta ziņojumu sūtīšanai.
Jūs definējat informāciju, kas nepieciešama jūsu e-pasta ziņojumiem koda pirmajā pusē, un izmantojat šīs vērtības, lai nosūtītu pastu otrajā pusē. Jums vajadzētu būt iespējai izmantot koda otro pusi fiksētā veidā, vienkārši mainot pirmās puses definīciju pēc vajadzības.
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
using MimeKit.Text;
namespace MailKitSend
{
class Program
{
static void Main(string[] args)
{
// メールの送信に必要な情報
var smtpHostName = "[SMTP サーバー名]";
var smtpPort = 587; // or 25
var smtpAuthUser = "[認証ユーザー名]";
var smtpAuthPassword = "[認証パスワードまたはアプリパスワード]";
// メールの内容
var from = "[送信者メールアドレス]";
var to = "[送り先メールアドレス]";
var subject = "テストメールの件名です。";
var body = "テストメールの本文です。\n改行です。";
var textFormat = TextFormat.Text;
// MailKit におけるメールの情報
var message = new MimeMessage();
// 送り元情報
message.From.Add(MailboxAddress.Parse(from));
// 宛先情報
message.To.Add(MailboxAddress.Parse(to));
// 表題
message.Subject = subject;
// 内容
var textPart = new TextPart(textFormat)
{
Text = body,
};
message.Body = textPart;
using var client = new SmtpClient();
// SMTPサーバに接続
client.Connect(smtpHostName, smtpPort, SecureSocketOptions.Auto);
if (string.IsNullOrEmpty(smtpAuthUser) == false)
{
// SMTPサーバ認証
client.Authenticate(smtpAuthUser, smtpAuthPassword);
}
// 送信
client.Send(message);
// 切断
client.Disconnect(true);
}
}
}
E-pasta ziņojuma nosūtīšanai nepieciešamās informācijas definēšanu
var smtpHostName = "[SMTP サーバー名]";
var smtpPort = 587; // or 25
var smtpAuthUser = "[認証ユーザー名]";
var smtpAuthPassword = "[認証パスワードまたはアプリパスワード]";
Šeit tiek iestatītas dažādas vērtības atkarībā no izmantotā pasta servera (SMTP servera). Es gribētu paskaidrot dažas vērtības, kuras es iestatu šī raksta beigās, bet būtībā redzēt mana pasta servera vietni.
Sākotnēji tas ir rakstīts appsettigs.json utt., bet tas ir pareģojums, ka tas kļūst lieks kā Tips.
E-pasta ziņojuma satura definēšana
var from = "[送信者メールアドレス]";
var to = "[送り先メールアドレス]";
var subject = "テストメールの件名です。";
var body = "テストメールの本文です。\n改行です。";
var textFormat = TextFormat.Text;
Es domāju, ka šī daļa ir atbilstoša daļa, kā tas ir, ja jūs parasti izmantojat pasta sūtījumus utt.
Tā kā pēdējās pasta sistēmās nav iespējams nosūtīt maskējoties, būtībā jūs iestatīsiet tādu pašu e-pasta adresi kā jūsu e-pasta konts.
TextFormat
var nosūtīt tekstā vai HTML formātā. Ja to nosūtāt HTML formātā, ieguliet html tagus pamatteksta daļā.
E-pasta ziņojumu sūtīšanai nepieciešamās informācijas iestatīšana
// MailKit におけるメールの情報
var message = new MimeMessage();
// 送り元情報
message.From.Add(MailboxAddress.Parse(from));
// 宛先情報
message.To.Add(MailboxAddress.Parse(to));
// 表題
message.Subject = subject;
// 内容
var textPart = new TextPart(textFormat)
{
Text = body,
};
message.Body = textPart;
Būtībā tas ir iepriekš definētās vērtības iestatīšanas veids.
Varat arī iestatīt vairākus vienumus No un Līdz.
Tas nav iekļauts izlasē, bet tajā var iekļaut arī CC un BCC. Ja vēlaties to iekļaut, pievienojiet to tāpat kā No vai Līdz šādi:
message.Cc.Add(MailboxAddress.Parse(cc));
message.Bcc.Add(MailboxAddress.Parse(bcc));
Varat arī mainīt sūtītāja vai adresāta parādāmo vārdu, ja e-pasta adresāts tiek atbalstīts. Šādā gadījumā mainiet kodu šādi:
message.From.Add(new MailboxAddress("送信者の名前", from));
message.To.Add(new MailboxAddress("送り先の名前", to));
Sūtīt e-pastu
using var client = new SmtpClient();
// SMTPサーバに接続
client.Connect(smtpHostName, smtpPort, SecureSocketOptions.Auto);
if (string.IsNullOrEmpty(smtpAuthUser) == false)
{
// SMTPサーバ認証
client.Authenticate(smtpAuthUser, smtpAuthPassword);
}
// 送信
client.Send(message);
// 切断
client.Disconnect(true);
Kad esat beidzis definēt savu e-pastu, esat beidzis to sūtīt.
Iesniegšana SmtpClient
tiek veikta klases gadījumā. Dispose
Tā kā using var
tas ir mērķis, tas tiek deklarēts, lai to varētu izlaist automātiski.
Tā kā tas ir veids, kā rakstīt C # 8.0, lūdzu, mainiet using
uz parasto aprakstu iepriekšējām versijām.
SmtpClient.Connect
metodi SMTP serverim . Dažiem STMP serveriem ir nepieciešami SSL vai TLS savienojumi, SecureSocketOptions.Auto
bet norādīšana parasti ir laba.
Ja SMTP serveris pieprasa SmtpClient.Authenticate
autentifikāciju, metodē norādiet lietotājvārdu un paroli.
Kad savienojums ir SmtpClient.Send
pabeigts, nosūtiet e-pasta ziņojumu ar metodi.
Kad viss ir izdarīts, SmtpClient.Disconnect
atvienojiet to ar metodi.
Ņemiet vērā, ka šie padomi visas veic šīs operācijas kā sinhronas operācijas, bet katra metode var veikt arī asinhronu apstrādi ar nosaukumu xxxxxAsync. Lietojiet pēc vajadzības.
Kā nosūtīt pielikumus
Lai nosūtītu MimeMessage.Body
pielikumu, mainiet vērtību kopu uz šādu:
// using System.IO; 必要
var filePath = @"[ローカルに保存されているファイルパス].jpg"; // 例として JPEG ファイル指定
var buffer = File.ReadAllBytes(filePath);
var builder = new BodyBuilder();
// テキストか HTML で設定するプロパティが異なる
if (textFormat == TextFormat.Plain)
{
builder.TextBody = body;
}
else
{
builder.HtmlBody = body;
}
// 添付ファイルを追加
builder.Attachments.Add(Path.GetFileName(filePath), buffer, new ContentType("image", "jpg"));
message.Body = builder.ToMessageBody();
Iepriekšminētajā kodā lokāli saglabātais fails ir pielikums, bet dati var būt jebkas, jo tam ir jābūt tikai betātu masīvam vai straumei. JPEG faila nosūtīšana kā piemērs.
MimeMessage.Body
Vērtība, kuru iestatīsiet BodyBuilder
veidot kā .
Pamatteksts TextPart
atšķiras no , un rekvizīti, uz kuriem tas ir iestatīts, atšķiras neatkarīgi no tā, vai tas ir teksts vai HTML.
Lūdzu, ņemiet vērā, ka pat tad, ja iestatīsiet abus, pirmais iestatījums tiks izdzēsts.
Pielikums tiek BodyBuilder.Attachments
pievienots rekvizītam.
Argumenti ir "pielikuma nosaukums", "pielikuma dati" un "satura tips (MIME)".
Ņemiet vērā, ka saņēmēja puse nevar identificēt pielikuma nosaukumu, ja vien nepievienosiet paplašinājumu.
ContentType
iestatītā vērtība atšķirsies atkarībā no faila formāta.
Ja meklējat internetā ap "faila formātu MIME", jūs varēsiet redzēt kombināciju.
BodyBuilder.ToMessageBody
Visbeidzot, izsauciet metodi un iestatiet to MimeMessage.Body
uz .
Par SMTP servera norādīšanu
Pasta sūtīšanas SMTP serverim ir atšķirīgi iestatījumi atkarībā no izmantotā pasta servera. Tālāk ir sniegts piemērs, tāpēc, ja šādas lietas nav, lūdzu, pārbaudiet jūsu lietotā servera palīdzību.
Turklāt, tā kā informācija ir no 2021. gada aprīļa, šobrīd informācija var būt mainījusies.
Pasta pakalpojuma | SMTP servera porta | autentifikācija | Ja izmantojat | divsoļu verifikācijas šifrēšanu | |
---|---|---|---|---|---|
Outlook.com 1. daļa | smtp.office365.com | 587 | Lietotājvārds un parole | ?? | SĀKUMALS (STARTTLS) |
Outlook.com 2. daļa | smtp-mail.outlook.com | 587 | Lietotājvārds un parole | Lietotnes paroles iegūstšana un iestatīšana par paroli | SĀKUMALS (STARTTLS) |
Gmail (Gmail) | smtp.gmail.com | 465(SSL) vai 587(TLS) | Lietotājvārds un parole | Lietotnes paroles iegūstšana un iestatīšana par paroli | SSL vai TLS, vai STARTTLS |
Yahoo! Pasts | smtp.mail.yahoo.co.jp | 465 | Lietotājvārds un parole | ?? | Nezināms tips |
OCN (OCN) | smtp.ocn.ne.jp | 465 | Lietotājvārds un parole | ?? | SSL vai TLS |