调用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工程,引入 ...
随机推荐
- pytorch中torch.nn构建神经网络的不同层的含义
主要是参考这里,写的很好PyTorch 入门实战(四)--利用Torch.nn构建卷积神经网络 卷积层nn.Con2d() 常用参数 in_channels:输入通道数 out_channels:输出 ...
- TouTiao开源项目 分析笔记17 新闻媒体专栏
1.效果预览 1.1.要实现的效果 1.2.如何调转到新闻媒体专栏 点击右上角的用户图标. 在新闻详情页面的Fragment的菜单点击事件中触发. case R.id.action_open_medi ...
- 容器技术的落地还要依靠SDN
容器能够实现新应用程序的快速部署,代表着目前IT开发社区的最热门趋势之一.然而,想要实现容器部署生产环境,IT人员还需要使用SDN技术,在分布式微应用程序之间实现可扩展.可管理且安全的通信. 什么是容 ...
- 一个python的文件对比脚本
脚本主要用来给游戏客户端做热更的. 处理方式就是针对每个文件求其MD5值,再根据文件的目录和名字对比两个版本的MD5值,如果不一样,则这次热更就需要更新这个文件. 用法很简单. 1,生成MD5码列表 ...
- VS的几个实用快捷键
Ctrl + K, D格式化代码 Ctrl + L 删除一行 Ctrl + K, S调出自动代码块 svm之后二下TAB 生成Main方法 Ctrl + K,C注释代码块Ctrl+K,U取消注释
- 《Cracking the Coding Interview》——第4章:树和图——题目7
2014-03-19 04:48 题目:最近公共父节点问题. 解法1:Naive算法,先对其高度,然后一层一层往上直到找到结果. 代码: // 4.7 Least Common Ancestor // ...
- 玩转Openstack之Nova中的协同并发(一)
玩转Openstack之Nova中的协同并发(一) 前不久参加了个Opnstack的Meetup,其中有一个来自EasyStack的大大就Nova中的协同并发做了一番讲解,有所感触,本想当天就总结一下 ...
- Python全栈工程师(编码)
ParisGabriel Python 入门基础 补充: 主流3操作大系统 Windows: Winxp Win7 Win8 Win10 Unix: Solaris(SUN) IO ...
- C#中的&运算
2是一个比较特殊的数. 2的1次方2 2的2次方4 2的3次方8 2的4次方16 2的5次方32 2的6次方64 2的7次方128 2的8次方256 2的9次方512 2的10次方1024 2的11次 ...
- qemu中是怎么模拟的新的设备
kvm_cpu_exec 和demo中演示的一样