私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
機能説明: メール認証を利用してユーザー登録の有効化とパスワードの取得を実現します。メールボックスは NetEase 163 を SMTP サーバーとして選択します。
実際のテスト状況: タイプ 1: ほとんどのサーバー オペレーターのポート 25 はデフォルトでブロックされています。オペレーターに連絡してポート 25 のブロックを解除することができます。ブロックを解除すると、ポート 25 が使用できるようになります。 2 番目のタイプ: 465 および 587 暗号化ポートを使用する。テスト後、587 ポートは送信に失敗し、「送信接続からデータを読み取ることができません」というメッセージが返されたため、ここでは 465 ポートの構成のみを行います。以下に 2 つの成功例のコードを示しますので、実際の状況に応じて選択してください。
インターネット上の情報から、Alibaba と QQ のメールボックスの 587 ポートでも送信に失敗したことがわかり、現在 3 つの大手通信事業者である NetEase、Alibaba、QQ の stmp サービスのポート 587 に障害が発生していることがわかっています。
ステップ 1: smtp サービスを開始します。 NetEase メールボックスにログインします [設定] - 左側のメニューで [POP3/SMTP/IMAP] を見つけ、サービスを有効にして認証パスワードを取得します (注: コード内のパスワードは認証パスワードを使用します)。写真のようにセットしてください
ステップ 2: サーバーのファイアウォール スタック ルールを設定し、ポート 465 を追加します。
ステップ 3: コードを作成します。
Send25 は、ポート 25 で電子メールを送信する機能をテストする方法です。使用するクラスライブラリ System.Net.Mail
パブリック void Send25()
{
//this.SmtpHost //SMTPサーバーアドレスを指定します
//this.SmtpPort //SMTPサーバーポート
//this.FromEmailAddress //メール送信用のメールアドレス
//this.FormEmailPassword //メール送信用のメールパスワード、認証コードはここで使用されます
//this.ToList //電子メールを受信するための電子メール アドレス。カンマで区切られたコレクションにすることができます。
//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//解除可能
SmtpClient smtp = new SmtpClient() //SmtpClient をインスタンス化します。
smtp.deliveryMethod = SmtpdeliveryMethod.Network; // smtp の送信モードをネットワークに設定します。
smtp.EnableSsl = false; //smtp サーバーが SSL 暗号化を有効にするかどうか
smtp.Host = this.SmtpHost; //SMTP サーバーのアドレスを指定します。
smtp.Port = this.SmtpPort; //smtp サーバーのポートを指定します。デフォルトは 25 です。デフォルトのポートを使用する場合は省略できます。
smtp.UseDefaultCredentials = true; //SMTP サーバーが ID 認証を必要としない場合は、次の方法を使用します。ただし、現在は基本的に認証は必要ありません。
//smtp.EnableSsl = false;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword) //認証が必要な場合は、次のメソッドを使用します。
MailMessage mm = new MailMessage() //メールクラスをインスタンス化します。
mm.Priority = MailPriority.Normal; //メールの優先度はLow、Normal、Highに分かれており、通常はNormalが使用可能です。
mm.From = new MailAddress(this.FromEmailAddress, "管理者", Encoding.GetEncoding(936));
//受信者
if (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(これをToListに追加します);
//CCの人
if (!string.IsNullOrEmpty(this.CCList))
CCList に CC を追加します。
//CC
if (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(this.BccList);
mm.Subject = this.Subject //メールのタイトル;
mm.SubjectEncoding = Encoding.GetEncoding(936); //これは非常に重要です。メールのタイトルに中国語が含まれている場合は、ここで指定する必要があります。そうしないと、相手に文字化けが発生する可能性があります。
mm.IsBodyHtml = this.IsBodyHtml; //メール本文が HTML 形式かどうか
mm.BodyEncoding = Encoding.GetEncoding(936); //メール本文のエンコーディングが正しく設定されていないため、受信者は文字化けしてしまいます。
mm.Body = this.Body //メール本文;
//メール添付ファイル
(this.AttachmentList != null && this.AttachmentList.Count > 0) の場合
{
foreach (this.AttachmentList 内の添付ファイル attachment)
{
mm.Attachments.Add(添付ファイル);
}
}
smtp.Send(mm);
}
Send465 は、ポート 465 で電子メールを送信する機能をテストする方法です。使用するクラスライブラリ System.Web.Mail
パブリックブール Send465()
{
// メールの件名
System.Web.Mail.MailMessage mmsg = 新しい System.Web.Mail.MailMessage();
//メールの件名
mmsg.Subject = "件名";
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//メール本文
mmsg.Body = "テキスト";
//テキストエンコーディング
mmsg.BodyEncoding = Encoding.UTF8;
//優先度
mmsg.Priority = System.Web.Mail.MailPriority.Normal;
//送信者のメールアドレス
mmsg.From = 電子メール;
//受信者の受信箱アドレス
mmsg.To = 電子メール;
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//ユーザー名
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", 電子メール);
//パスワード(認証コード)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//ポート
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", ポート);
//SSLかどうか
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//SMTPサーバー
System.Web.Mail.SmtpMail.SmtpServer = ホスト;
試す
{
System.Web.Mail.SmtpMail.Send(mmsg);
true を返します。
}
catch (例外例)
{
false を返します。
}
}