调用SMTP发送有附件的邮件
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发送有附件的邮件的更多相关文章
- smtp发送带附件的邮件(直接将string类型结果保存为附件)
该方式直接保存为HTML文件,也可以是文本文件,其它格式效果不是很好 MailMessage mmsg = new MailMessage(); mmsg.Subject = " ...
- java发送带附件的邮件
/** * java发送带附件的邮件 * 周枫 * 2013.8.10 */ package com.dsideal.Util; import javax.mail.*; import javax.m ...
- C#发送带附件的邮件的代码
如下的代码是关于C#发送带附件的邮件的代码. MailMessage m = new MailMessage();m.Subject = "File attachment!";m. ...
- 利用Python+163邮箱授权码发送带附件的邮件
背景 前段时间写了个自动爬虫的脚本,定时在阿里云服务器上执行,会从某个网站上爬取链接保存到txt文本中,但是脚本不够完善,我需要爬虫完毕之后通过邮件把附件给我发送过来,之前写过一个<利用Pyth ...
- [SpringBoot] - 发送带附件的邮件
<!--发送email依赖--> <dependency> <groupId>org.springframework.boot</groupId> &l ...
- spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
一,网站哪些情况下需要发送电子邮件? 作为一个电商网站,以下情况需要发邮件通知用户: 注册成功的信息 用邮箱接收验证码 找回密码时发链接 发送推广邮件 下单成功后的订单通知 给商户的对账单邮件 说明: ...
- Android在发送带有附件的邮件
准备好工作了-下载最新的版本号JMail https://java.net/projects/javamail/pages/Home#Download_JavaMail_1.5.2_Release h ...
- 如何用unity3d实现发送带附件的邮件
以Gmail为例.点击屏幕的Capture按钮得到当前屏幕截图,点击Send按钮将之前的截图作为附件发送邮件. using UnityEngine; using System.Collections; ...
- 【Mail】JavaMail发送带附件的邮件(二)
上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...
随机推荐
- PyQuery网页解析库
from pyquery import PyQuery as pq 字符串初始化: doc = pq(html) URL初始化:doc = pq(url = "···") 文件初始 ...
- random模块 time模块的用法 python
1.random()模块的使用 import random x = random.random() y = random.random() print(x,y*10) #random.random() ...
- javascript的js调用
本来从一开始接触编程开始,自己就一直写后端,但是对于前端真的不会,但是没办法呀,公司要做,所以,好吧,开始了写一写简单的javascript的内容其中,在xxx.jsp页面中出现了这个 <a c ...
- scala Actor -03
1.对于上一篇讲解的scala的一些补充 val files = Array[String]("a.txt","b.txt","c.txt" ...
- Spark 源码阅读——任务提交过程
当我们在使用spark编写mr作业是,最后都要涉及到调用reduce,foreach或者是count这类action来触发作业的提交,所以,当我们查看这些方法的源码时,发现底层都调用了SparkCon ...
- Unity Occlusion Culling 遮挡剔除研究
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/52684127 作者:car ...
- Android 如何在xmL 里面动态设置padding
如题,Android 如何在xmL 里面动态设置padding 有时候,你的布局加载完成之后,你findViewByid 找到控件,设置padding 会导致白条,布局闪动,那怎么办呢? 你是不是就想 ...
- jquery跨域解决方案JSONP
1.在互联网中我们的计算机是通过IP来定位的,但是IP比较难记忆,因此通过domain name(域名)来取代IP 2.什么是跨域? (1)默认浏览器为了安全问题,禁止了xmlhttprequest跨 ...
- laravel5.5容器
目录 1. 比较典型的例子就是 cache 缓存 2. 容器顾名思义,其实就是完成存取过程 2.1 绑定过程 简单绑定 绑定单例 绑定实例 绑定初始数据 2.2 解析过程 容器主要是为了实现控制反转, ...
- leetcode 【 Remove Nth Node From End of List 】 python 实现
题目: Given a linked list, remove the nth node from the end of list and return its head. For example, ...