C#メールの送信(書き込みのみ送信)
5722 ワード
以前はsql serverでのメール送信使用を記録していましたが、今はC#コードでメールの使用方法を記録しています.
C#メールの「ワークフロー原理」は、C#ネットワークプログラミングノートに記載されています.例えば、Aはテンセントのメールボックスを使って、Bは網易のメールボックスを使って、AはBに1つのメールを送って、その流れは:Aはメールをテンセントのメールボックスサーバーに送って、それからテンセントのメールボックスサーバーは目標のメールボックス(網易のメールボックス)によって判断して、メールをB用の網易メールサーバーに送信し、メールサーバーを受信してからBメールクライアントに送信する.
メール送信に関するクラスをレビューします.
1:認証クラス:NetWorkCredential
このクラスはクライアント認証のための認証情報で、送信者のメールアドレスとパスワードが必要です.
2:メールアドレスクラス:MailAddress
送信者と受信者の送信先を指定します.
3:メール情報類:MailMessage
このクラスはメールの基本情報を提供しています.テーマ、内容、添付ファイルなどです.
4:添付ファイル類Attachment
添付ファイルの提供
5メール送信クラス:SmtpClient
以上の4つのクラスが設定した情報は、すべてこのクラスで使用されています.
次に、他人がカプセル化したメール送信クラスを貼り付けます.
C#メールの「ワークフロー原理」は、C#ネットワークプログラミングノートに記載されています.例えば、Aはテンセントのメールボックスを使って、Bは網易のメールボックスを使って、AはBに1つのメールを送って、その流れは:Aはメールをテンセントのメールボックスサーバーに送って、それからテンセントのメールボックスサーバーは目標のメールボックス(網易のメールボックス)によって判断して、メールをB用の網易メールサーバーに送信し、メールサーバーを受信してからBメールクライアントに送信する.
メール送信に関するクラスをレビューします.
1:認証クラス:NetWorkCredential
このクラスはクライアント認証のための認証情報で、送信者のメールアドレスとパスワードが必要です.
NetworkCredential my_credential = new NetworkCredential("[email protected]", "XXXXXXXX");// --
2:メールアドレスクラス:MailAddress
送信者と受信者の送信先を指定します.
MailAddress From = new MailAddress("[email protected]", " ", System.Text.Encoding.UTF8);// , ,
一般的には受信者アドレスクラスも作成するが、上記のように(送信者は表示名を記入する必要はない)、この構造関数は5つのリロードがあり、自分で状況を見て使用する.3:メール情報類:MailMessage
このクラスはメールの基本情報を提供しています.テーマ、内容、添付ファイルなどです.
public static MailMessage mm = new MailMessage();
mm.To.Add(new MailAddress(str, "", System.Text.Encoding.UTF8)); // , Add(),
MailAddress maf = new MailAddress("[email protected]", "name",System.Text.Encoding.UTF8);// , ,
mm.Sender = maf; //
mm.From = maf; // ( , )
mm.Body = str_zw; //
mm.Priority = MailPriority.Normal; // :high,normal,low
mm.SubjectEncoding = System.Text.Encoding.UTF8; //
mm.IsBodyHtml = true; // html ( )
mm.Subject = str_bt; //
4:添付ファイル類Attachment
添付ファイルの提供
MailMessage mm = new MailMessage();
Attachment af = new Attachment(" ");//
mm.Attachments.Add(af); // ,
5メール送信クラス:SmtpClient
以上の4つのクラスが設定した情報は、すべてこのクラスで使用されています.
public void Set_SMTP_Client()
{
SmtpClient scMain = new SmtpClient("smtp.mail.qq.com", 25);
scMain.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted);
scMain.EnableSsl = false;
scMain.UseDefaultCredentials = true;
scMain.Credentials = new System.Net.NetworkCredential(name, pwd);
scMain.DeliveryMethod = SmtpDeliveryMethod.Network;
ThreadStart ts = new ThreadStart(fff);
Thread td = new Thread(ts);
td.IsBackground = true;
td.Start();
}
public void Send()
{
try
{
scMain.Send(mm);
}
catch
{
}
}
次に、他人がカプセル化したメール送信クラスを貼り付けます.
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;
using System.Data;
using System.Net.Mail;
using System.Threading;
/// <summary>
///Sendemail
/// </summary>
public class Sendemail
{
public Sendemail()
{
//
//TODO:
//
}
public static MailMessage mm = new MailMessage();
public static SmtpClient scMain = new SmtpClient("smtp.yeah.net", 25);//
/// <summary>
///
/// </summary>
/// <param name="str"> </param>
/// <param name="str_zw"> </param>
/// <param name="str_bt"> </param>
public static void fasong(string str, string str_zw, string str_bt)
{
string name = ConfigurationManager.AppSettings["email_name"];//
string pwd = ConfigurationManager.AppSettings["email_pwd"];//
mm.To.Add(new MailAddress(str, "", System.Text.Encoding.UTF8));
MailAddress maf = new MailAddress(name, "zhifeiya", System.Text.Encoding.UTF8);// , ,
mm.Sender = maf;
mm.From = maf;
mm.Body = str_zw;
mm.Priority = MailPriority.Normal;
mm.SubjectEncoding = System.Text.Encoding.UTF8;
mm.IsBodyHtml = true;
mm.Subject = str_bt;
try
{
//SmtpClient scMain = new SmtpClient("smtp.mail.qq.com", 25);
scMain.SendCompleted += new SendCompletedEventHandler(sc_SendCompleted);
scMain.EnableSsl = false;
scMain.UseDefaultCredentials = true;
scMain.Credentials = new System.Net.NetworkCredential(name, pwd);
scMain.DeliveryMethod = SmtpDeliveryMethod.Network;
ThreadStart ts = new ThreadStart(Statr_Send);
Thread td = new Thread(ts);
td.IsBackground = true;
td.Start();
}
catch
{
}
}
private static void Statr_Send()
{
try
{
scMain.Send(mm);
}
catch
{
}
}
static void sc_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
}
}