using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TKMP.Writer;
using TKMP.Net;
namespace TKMP_SendMail_Sakura1 {
class MailClass {
private MailWriter mw = null;
public string SmtpServer { get; set; }
public int Port { get; set; }
public string User { get; set; }
public string Pass { get; set; }
public AuthenticationProtocols Protocol { get; set; }
private string err_message = "";
public class MailClassErrorArg {
public string Message { get; set; }
}
public delegate void MailClassError(MailClassErrorArg e);
public bool SendMail(string To, string From, string Subject, string Body, string To_J, string From_J, MailClassError mce) {
bool bResult = true;
mw = new MailWriter();
try {
mw.ToAddressList.Add(To);
}
catch (Exception ex) {
bResult = false;
}
if (!bResult) {
if (mce != null) {
MailClassErrorArg e = new MailClassErrorArg() { Message = "宛先が正しくありません" };
mce(e);
}
return bResult;
}
// From が未指定や正しくない文字列の場合
try {
mw.FromAddress = From;
}
catch (Exception ex) {
// ユーザが正しければ、以下のように設定しても『ユーザ名 <メールアドレス>』に変換される
mw.FromAddress = "______@hotmail.co.jp";
}
TextPart tp = new TextPart(Body);
mw.MainPart = tp;
if (To_J != null) {
mw.Headers.Add("To", To_J + " <" + To + ">");
}
else {
mw.Headers.Add("To", To);
}
if (From_J != null) {
mw.Headers.Add("From", From_J + " <" + From + ">");
}
else {
// Hotmail では、自動的に 『ユーザ名 <メールアドレス>』に変換される
mw.Headers.Add("From", From);
}
mw.Headers.Add("Subject", Subject);
mw.Headers.Add("X-Mailer", "TKMP Version 3.1.2");
var logon = new TKMP.Net.AuthLogin(User, Pass);
SmtpClient sc = new SmtpClient(SmtpServer, Port, logon);
sc.AuthenticationProtocol = Protocol;
try {
if (!sc.Connect()) {
err_message = "接続に失敗しました";
bResult = false;
}
else {
sc.SendMail(mw);
sc.Close();
}
}
catch (Exception ex) {
err_message = ex.Message;
bResult = false;
}
if (!bResult) {
if (mce != null) {
MailClassErrorArg e = new MailClassErrorArg() { Message = err_message };
// このメソッドの引数である、ErrorHandler デリゲートを呼び出す
mce(e);
}
}
return bResult;
}
public bool SendMail(string To, string From, string Subject, string Body, string To_J, string From_J) {
return SendMail(To, From, Subject, Body, To_J, From_J, null);
}
public bool SendMail(string To, string From, string Subject, string Body) {
return SendMail(To, From, Subject, Body, null, null, null);
}
}
}