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());
}
}
}
}
相关推荐
简单发邮件小程序
1:发邮件功能如下: a:批量添加邮箱 b:添加多个附件、并支持查看附件信息和移除附件。 2:因为免费,所以126,136服务器人家对咱 有控制:(我测试了126,136邮件) 1:邮箱虽已分组发送,但一次只能发送35个之内。 2:附件大小控件在50M。 3:功能采用c#的SmtpClient和MailMessage实现,源代码如下: 批量导入邮箱: 添加附件: 邮件发组: 发邮件:
c# 发送邮件,抄送人格式:半角逗号隔开
c# 发送邮件,抄送人格式:半角逗号隔开
一个非常简单的网页邮件发送程序
一个非常简单的网页邮件发送程序,没有增加线程保护,可用于状态触发下的邮件通知.
程序发邮件 - 从忐忑到坦然
目录1. 版权2. 免费邮箱方式3. 阿里云邮件推送方式购买域名配置域名smtp协议使用gomail库发送错误处理4. 安全delaylimitby-域名 limit (mysql) 1. 版权 本文为原创,遵循 CC 4.0 BY-SA 版权协议,转载需注明出处: https://blog.csdn.net/big_cheng/article/details/116099081. 2. 免费邮箱方式 最开始很自然想到的是申请一个免费邮箱, 用来在程序中发送邮件. 但是实践证明不可行: 免费的速度慢、服务商
邮箱推送
实现: 邮箱推送消息或者邮箱注册验证 优势: 零成本;发邮件没有费用; 内容丰富且量大;邮件可以长篇大论;图文并茂; 增加访问量;用户很容易通过邮件中的链接访问网站; 前提: 首先我们要确认我们的邮件发送的扩展项已经开启, 查看方式: ...
程序控制发送文件到邮箱_Kindle电子邮箱推送
Kindle 推送支持的格式目前 Kindle 推送仅支持以下几种格式。需要注意的是,AZW 和 AZW3 是两种不同的格式,虽然这两种格式 Kindle 设备都支持阅读,但是亚马逊的个人文档服务支持推送 AZW 但是不支持 AZW3。Kindle 格式 (.mobi 或 .azw)* 推荐格式Microsoft Word (.doc 或 .docx)HTML (.html, .htm...
Java实战邮件推送
Java实现邮件推送
小程序发送邮件,小程序云开发使用云函数发送邮件
上一节给大家讲了借助小程序云开发的云函数管理mysql数据库,这一节,就来给大家讲一讲使用云开发云函数实现邮件发送的功能。 老规矩,先看效果图 通过上面的日志,可以看出我们是158的邮箱给250的邮箱发送邮件,下面是成功接收到的邮件。 准备工作 1,qq邮箱一个 2,开通你的qq邮箱的授权码(会具体讲解) 3,注册自己的小程序(因为只有注册的小程序才能使用云开发) 4,电脑要安装node(...
Python小项目:基于tkinter开发邮件发送程序
本文介绍了一个使用Python和tkinter库创建的简单邮件发送界面。用户可以通过界面输入发件人邮箱、名称,收件人邮箱列表,邮件主题,发件人授权码和邮件内容,并通过点击按钮发送邮件。该界面使用了tkinter库创建用户界面和控件,并调用email和smtplib库来处理邮件操作。通过这个示例,用户可以学习如何创建自己的邮件发送界面,并进行进一步的功能扩展和优化。希望这个示例对用户有所帮助,使邮件发送变得更轻松和便捷。
ABAP-邮件发送程序
ABAP-邮件发送程序 说明: IT_ITAB 是要传送的EXCEL表格中的数据 data: IT_DOCUMENT_DATA TYPE SODOCCHGI1, IT_CONTENT_TEXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE, IT_PACKING_LIST TYPE TABLE OF SOPCKLSTI1...
python学习——邮件发送程序
本程序留存使用,网上找的教程,不能运行, 自己修改了一下, 主流邮箱不能登录, 比如163,qq 但是自己个人邮箱能够登录,并发送成功 问题关键在于如何能够登录成功, 只要登录成功, 就能够发送成功不管是给 163 qq #!/usr/bin/env python #coding=utf-8 from smtplib import * from
在VC中调用默认的电子邮件程序发送邮件
很多时候大家需要在程序中发送邮件,自己编又太麻烦,怎么办,呵呵,有现成的!1、想省事儿的,用ShellExecute函数:ShellExecute(NULL,NULL,"mailto:email@263.net",NULL,NULL,SW_SHOW);2、如果想自己多处理一些东西的话,比如加上默认的帐号、密码、附件等,就可以调用系统的Mapi函数。具体的用法大家可以去查MSDN都是以MAPI开头的
linux 发送邮件程序
大家都知道,要发送邮件,就是编写一个 smtp客户端,smtp其实是基于anscII的字符协议,说白了,也就是你往服务器上发送指定的字符,服务器便会有相应的响应,当然到底发送什么字符呢?这个就是smtp协议了。如果想发送二进制的文件,音视频数据,那么就需要MIME(通用internet邮件扩充协议),它利用一些编码方式将这些数据转化为anscII字符,发送出去,接收端在利用相应的解码方式进行解
C#写一个简单的邮件发送程序
C#作业
发邮件的java程序_java实现发送邮件的程序
import java.io.InputStream;import java.util.ArrayList;import java.util.Date;import java.util.Properties;import java.util.StringTokenizer;import javax.mail.Authenticator;import javax.mail.Message;impor...
python:消息推送 - 发邮件(网易163邮箱为例)
实现推送的处理步骤:创建邮箱 - 设置登录的服务密码 - 开启邮箱IMAP/SMTP服务和POP3/SMTP服务。 开启成功后: 按照对应的邮件模块文档说明,将包装后的文件内容进行推送: import smtplib # 发邮件的模块 from email.mime.text import MIMEText # 定义邮件内容 from email.header import Header import logging def send_mail(): mail_content = "邮件
怎么设置邮件推送?邮件推送小妙招。
在手机上进行邮件的收发消息推送,这样你拿这手机登录这微信就可以第一时间收到,不会拉下任何邮件!
401




被折叠的 条评论
为什么被折叠?



