选择要发送的用户,填写右边的邮箱信息和附件
前端代码
html块
<div class="layui-col-md5">
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">邮件标题</label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" placeholder="请输入标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮件正文</label>
<div class="layui-input-block">
<textarea name="content" placeholder="请输入内容" class="layui-textarea"></textarea>
</div>
@*<div class="layui-form-mid layui-word-aux">辅助文字</div>*@
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">邮件附件</label>
<div class="layui-input-block">
<label style="color:red">上传的文件不能超过20M</label>
<input type="file" id="files" name="files" multiple="multiple" hidden />
<input type="text" class="layui-input" readonly id="select" placeholder="点击选择文件" />
</div>
</div>
</div>
<div class="layui-form-item" style="float: right;">
<div class="layui-inline">
<div class="layui-input-block">
<button type="button" class="layui-btn" onclick="SendEmail()">发送</button>
</div>
</div>
</div>
</form>
</div>
我这里用的是layui的框架
js块
点击发送按钮事件
//发送邮箱
function SendEmail() {
layui.use('table', function () {
var table = layui.table;
var orders = new Array();
var checkStatus = table.checkStatus('OrgList');
if (checkStatus.data.length == 0) {
layer.msg("请选择一条数据!");
return false;
}
var EmailData = {}
EmailData.fwbt = $("input[name=title]").val();
EmailData.fwnr = $("textarea[name=content]").val();
EmailData.emaillist=[]
for (var i = 0; i < checkStatus.data.length; i++) {
datalist.khname.push(checkStatus.data[i].name);
datalist.khid.push(checkStatus.data[i].id);
EmailData.emaillist.push(checkStatus.data[i].email)
}
datalist.fwbt = $("input[name=title]").val();
datalist.fwnr = $("textarea[name=content]").val();
var obj = document.getElementById("files");
var fl = obj.files.length;
var obj = document.getElementById("files");
var fl = obj.files.length;
if (fl > 0) {
var datas2 = new FormData();
for (var i = 0; i < fl; i++) {
var files = obj.files[i];
datas2.append("files", files);
}
}
$axfile("/api/YWGL/Fictitious?EmailData=" + JSON.stringify(EmailData), datas2, true, "POST", "json", header, function (data) {
})
});
}
EmailData是里面分别是邮箱标题、邮箱内容、还有选择的客户的邮箱,datas2是选择的附件信息
后端API
首先要在Web.config里面加入以下代码,用于保存获取发送人的的邮箱信息
<!--邮箱配置-->
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="(发送人的QQ号)@qq.com">
<network host="mail.sohu.com" userName="(发送人的QQ号)@qq.com" password="(发送人的QQ密码)" />
</smtp>
</mailSettings>
</system.net>
接口代码
/// <summary>
/// 发送邮箱
/// </summary>
[HttpPost]
public Response Fictitious(string EmailData)
{
JObject filter = JObject.Parse(EmailData);
MailMessage msg = new MailMessage();
SmtpSection cfg = NetSectionGroup.GetSectionGroup
(WebConfigurationManager.OpenWebConfiguration("~/web.config")).MailSettings.Smtp;//获取配置文件里面发送人的邮箱信息
var Scheme = System.Web.HttpContext.Current.Request.Url.Scheme;
var port = System.Web.HttpContext.Current.Request.Url.Port;
var Host = System.Web.HttpContext.Current.Request.Url.Host.ToString();
//string emailcontent = "";
string emailcontent = $"标题:{filter["fwbt"].ToString()}\n正文:{filter["fwnr"].ToString()}\n";//邮件内容
//邮件附件
HttpRequest request = HttpContext.Current.Request;
if (request.ContentLength > 20 * 1024 * 1024)
{
return new Response
{
Result = 2
};
}
HttpPostedFile postedFile = null;
int sl = HttpContext.Current.Request.Files.Count;
for (int i = 0; i < sl; i++)
{
postedFile = HttpContext.Current.Request.Files[i];
string rootDictory = AppDomain.CurrentDomain.BaseDirectory;
string filePath = "Files\\ywgl_khfwfj\\";
rootDictory += filePath;
if (!Directory.Exists(rootDictory))
{
Directory.CreateDirectory(rootDictory);
}
string filename = Path.GetFileName(postedFile.FileName);
string fileExtension = Path.GetExtension(postedFile.FileName);//文件后缀
string gid = Guid.NewGuid().ToString().Replace("-", "");
string sFileName = rootDictory + gid + fileExtension; //文件地址 + 文件名
postedFile.SaveAs(sFileName);//保存附件到本地
//添加附件
Attachment data;
ContentDisposition disposition;
data = new Attachment(sFileName, MediaTypeNames.Application.Octet);//实例化附件
disposition = data.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(sFileName);//获取附件的创建日期
disposition.ModificationDate = System.IO.File.GetLastWriteTime(sFileName);//获取附件的修改日期
disposition.ReadDate = System.IO.File.GetLastAccessTime(sFileName);//获取附件的读取日期
msg.Attachments.Add(data);//添加到附件中
}
var aa1 = filter["emaillist"].ToString();
string b = aa1.Substring(1, aa1.Length - 2);
string[] myArray = b.Trim().Split(',');
for (int i = 0; i < myArray.Length; i++)
{
var aaa = myArray[i];
string bbb = aaa.Trim().Replace("\"", "");
if (!string.IsNullOrWhiteSpace(bbb))
{
msg.To.Add(bbb);//收件人地址
msg.CC.Add(bbb);//抄送人地址
msg.From = new MailAddress(cfg.Network.UserName, "邮箱通知");//发件人邮箱,名称
msg.Subject = "邮箱通知";//邮件标题
msg.SubjectEncoding = Encoding.UTF8;//标题格式为UTF8
msg.Body = emailcontent;//邮件内容
msg.BodyEncoding = Encoding.UTF8;//内容格式为UTF8
SmtpClient client = new SmtpClient();
client.Host = "smtp.qq.com";//SMTP服务器地址
client.Port = 587;//SMTP端口,QQ邮箱填写587
client.EnableSsl = true;//启用SSL加密
//发件人邮箱账号,授权码(注意此处,是授权码你需要到qq邮箱里点设置开启Smtp服务,然后会提示你第三方登录时密码处填写授权码)
client.Credentials = new System.Net.NetworkCredential(cfg.Network.UserName, "tcxsctevlbsjdhii");
client.Send(msg);//发送邮件
}
};
return new Response
{
Result = 1
};
}
综上所述就可以实现发送邮件以及邮件附件了,希望对你有帮助