using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Text.RegularExpressions;
using System.IO;
namespace SendEmail
{
class Program
{
static void Main(string[] args)
{
string strContent = GetAbandonNumAndRollbackNumOfRobot();
Console.WriteLine(strContent);
//接收者的邮件地址
string strReceivers = ConfigurationManager.AppSettings["receiver"].ToString();
string[] ArrMailto = strReceivers.Split(';');
//抄送者的邮件地址
string strCopytos = ConfigurationManager.AppSettings["copyto"].ToString();
string[] ArrMailcc = strReceivers.Split(';');
SendEmail(strContent,ArrMailto,ArrMailcc);
Console.ReadKey();
}
/// <summary>
/// 邮件发送程序
/// </summary>
/// <param name="strbody">发送的主体信息</param>
/// <param name="ArrMailTo">接收人</param>
/// <param name="ArrMailCc">抄送</param>
static void SendEmail(string strbody, string[] ArrMailTo, string[] ArrMailCc)
{
try
{
//验证是否为正确的邮件地址
Regex regMail = new Regex(@"^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$");
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("xxxxx@gmail.com");//发送者的邮箱
foreach (var item in ArrMailTo)
{
if (regMail.Match(item).Success)
{
mail.To.Add(item);
}
}
foreach (var item in ArrMailCc)
{
if (regMail.Match(item).Success)
{
mail.CC.Add(item);
}
}
mail.Subject = "自动分拣人工复核数据统计";
if (strbody.Equals(""))
{
mail.Body = DateTime.Today.ToLocalTime().ToString()+"—" + DateTime.Now.ToString() + "没有自动分拣人工复核数据";
}
else
{
mail.Body = strbody;
}
mail.BodyEncoding = Encoding.Default;
//发送优先级
mail.Priority = MailPriority.High;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("xxxxx@gmail.com", "password");//发送者的邮箱与密码
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
Console.WriteLine("Mail sent successfully");
ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:Mail sent successfully");
}
catch (Exception ex)
{
Console.WriteLine("the mail sends out the failure:"+ex.ToString());
ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:the mail sends out the failure \n" + ex.ToString());
}
}
/// <summary>
/// 获得发送文件的主体信息
/// </summary>
/// <returns>主体信息</returns>
static string GetAbandonNumAndRollbackNumOfRobot()
{
SqlDataReader sdrData = GetData();
string strContent = "";//发送邮件的主体部分
Regex regCHS = new Regex(@"[\u4e00-\u9fa5]+");//所有汉字
int intMax = 15;//每一列的宽度为intMax
char charReplace = ' ';
bool flag = true;
while (sdrData.Read())
{
if (flag)
{
//获得标题
for (int i = 0; i < sdrData.FieldCount; i++)
{
var str = sdrData.GetName(i);
int n = str.Length;
if (regCHS.Match(str).Success)
{
//设定样式,每一列的宽度为intMax
str = str.PadRight(intMax - n, charReplace);
}
else
{
//字符长度不满足的情况以charReplcae补齐
str = str.PadRight(intMax, charReplace);
}
strContent = strContent + str;
}
flag = false;
strContent = strContent + "\n";
}
//获得内容
for (int i = 0; i < sdrData.FieldCount; i++)
{
var str = sdrData.GetValue(i).ToString();
int n = str.Length;
if (regCHS.Match(str).Success)
{
str = str.PadRight(intMax - n, charReplace);
}
else
{
str = str.PadRight(intMax, charReplace);
}
strContent = strContent + str;
}
strContent = strContent + "\n";
}
return strContent;
}
/// <summary>
/// 读取数据库操作
/// </summary>
/// <returns></returns>
static SqlDataReader GetData()
{
//测试的连接串
string StrCon = ConfigurationManager.ConnectionStrings["ConSql"].ConnectionString;
SqlConnection conn = new SqlConnection(StrCon);
try
{
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 1000;
cmd.Connection = conn;
cmd.CommandText = "pr_QueryAbandonNumAndRollbackNumOfRobot";//需要调用的存储过程
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
//获得数据
SqlDataReader sqlDate = cmd.ExecuteReader(CommandBehavior.CloseConnection);//执行完后关闭连接
return sqlDate;
}
catch (Exception e)
{
ErrorLog("SendmailLog" + ".txt", "【" + string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now) + "】:读取数据库操作出现问题 \n"+e.ToString());
return null;
}
finally
{
//sqlconn.Close();
}
}
/// <summary>
/// record the error log
/// </summary>
/// <param name="FileName">file name of log</param>
/// <param name="FileContent">error information</param>
private static void ErrorLog(string FileName, string FileContent)
{
try
{
string strPath = System.IO.Directory.GetCurrentDirectory() + "\\Log";
if (!Directory.Exists(strPath))
{
// Create the directory it does not exist.
Directory.CreateDirectory(strPath);
}
if (FileName.IndexOf("/") != -1)
{
FileName = FileName.Replace("/", "-");
}
string strLogName = strPath + "\\" + FileName;
FileInfo LogFile = new FileInfo(strLogName);
StreamWriter TextFile = LogFile.AppendText();
//如果日志文件大于50M
if (LogFile.Length < 50000000)
{
TextFile.WriteLine(FileContent);
}
TextFile.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
邮件发送程序
最新推荐文章于 2019-08-11 20:28:29 发布