using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Mail;
using System.Text.RegularExpressions; public class EmailUtils
{
#region 验证输入为Email
/// <summary>
/// 验证输入为Email
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static bool validateEmail(string str)
{
return Regex.IsMatch(str, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
}
#endregion public static void SendEmail(string txtSend,string txtTo)
{
try
{
if (validateEmail(txtSend))
{
//设置邮件发送人和接收人
MailMessage message = null;
if (txtTo.IndexOf(",") != -1)
{
string[] strEmail = txtTo.Split(',');
string sumEmail = "";
for (int i = 0; i < strEmail.Length; i++)
{
sumEmail = strEmail[i];
message = new MailMessage(new MailAddress(txtSend), new MailAddress(sumEmail));
SendEmail(message);
}
}
else
{
message = new MailMessage(new MailAddress(txtSend), new MailAddress(txtTo));
SendEmail(message);
}
Log("发送成功");
}
}
catch
{
Log("发送失败!");
}
} private void SendEmail(MailMessage message)
{
message.Subject = Base64Encode("testSubject"); //设置发送邮件的主题
message.Body = Base64Encode("testContent"); //设置发送邮件的内容
if (txtAttachment!= "")
{
if (txtAttachment.IndexOf(",") != 0)
{
string[] strAttachment = txtAttachment.Split(',');
for (int i = 0; i < strAttachment.Length; i++)
{
AddFile(strAttachment[i], message);
}
}
else
{
AddFile(txtAttachment, message);
}
}
//实例化SmtpClient邮件发送类对象
SmtpClient client = new SmtpClient(Dns.GetHostName(), Convert.ToInt32("25"));
//设置用于验证发件人身份的凭据
client.Credentials = new System.Net.NetworkCredential("MyTest", "*****");
//发送邮件
client.Send(message);
} //对邮件内容进行编码
private static string Base64Encode(string str)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
} private void AddFile(string strFile,MailMessage message)
{
//为要发送的邮件创建附件信息
Attachment myAttachment = new Attachment(strFile, System.Net.Mime.MediaTypeNames.Application.Octet);
//为附件添加时间信息
System.Net.Mime.ContentDisposition disposition = myAttachment.ContentDisposition;
disposition.CreationDate = System.IO.File.GetCreationTime(strFile);
disposition.ModificationDate = System.IO.File.GetLastWriteTime(strFile);
disposition.ReadDate = System.IO.File.GetLastAccessTime(strFile);
message.Attachments.Add(myAttachment); //将创建的附件添加到邮件中
}
}

调用SMTP发送有附件的邮件的更多相关文章

  1. smtp发送带附件的邮件(直接将string类型结果保存为附件)

    该方式直接保存为HTML文件,也可以是文本文件,其它格式效果不是很好    MailMessage mmsg = new MailMessage();    mmsg.Subject = " ...

  2. java发送带附件的邮件

    /** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...

  3. C#发送带附件的邮件的代码

    如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...

  4. 利用Python+163邮箱授权码发送带附件的邮件

    背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...

  5. [SpringBoot] - 发送带附件的邮件

    <!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...

  6. spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)

    一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...

  7. Android在发送带有附件的邮件

    准备好工作了-下载最新的版本号JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release h ...

  8. 如何用unity3d实现发送带附件的邮件

    以Gmail为例.点击屏幕的Capture按钮得到当前屏幕截图,点击Send按钮将之前的截图作为附件发送邮件. using UnityEngine; using System.Collections; ...

  9. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

随机推荐

  1. linux下,把屏幕竖起来

    xrandr -o left 向左旋转90度 xrandr -o right 向右旋转90度 xrandr -o inverted 上下翻转 xrandr -o normal 回到正常角度

  2. Docker使用入门

    docker images 查看本地镜像 docker ps -a  查询容器 docker ps -l  查询最近使用容器 docker rm CONTAINER_ID 删除容器 docker rm ...

  3. [Bzoj2246]迷宫探险(概率+DP)

    Description 题目链接 Solution 用三进制表示陷阱状态,1表示有害,2表示无害,0表示不知道 用\(f[S][i]\)表示状态为S时陷阱i有害的概率,这个可以预处理出 \(d[S][ ...

  4. 非阻塞IO模板

    服务端 from socke import * server = socket(AF_INET, SOCK_STREAM) server.bind(('127.0.0.1',8083)) server ...

  5. 洛谷P1605 迷宫

    迷宫 题目链接 这道题就是一道简单的dfs计方案数qwq. 我的思路是把表初始化为1,再将障碍改为0,因为在全局定义中数组会直接初始化为0,所以就少去了对边界的特判. next数组加循环可以减少代码量 ...

  6. USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  7. 抓包工具 - Fiddler - (一)

    <转载于 miantest> Fiddler基础知识 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888 ...

  8. 抽象类和虚方法、base关键字

    微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/abstract ...

  9. 孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化

    孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

  10. shell文本处理工具总结

    shell文本处理工具总结 为了效率,应该熟练的掌握自动化处理相关的知识和技能,能力就表现在做同样的一件事情,可以做的很好的同时,耗时还很短. 再次总结shell文本处理的相关规则,对提高软件调试效率 ...