最近公司的一个项目, 把网站的前后台分离到两个不同的服务器上(后台Server在公司内部网,前台Server在互联网了).
前后台用户(分别称呼:客户,公司员工)所有的上传的文件必须要存放在前台的Server上,这样客户才能无障碍访问文件.
那,客户登陆前台提出咨询问题之后,公司员工回复问题解决方法,解决方法包含附件.提交保存后要给前台用户发送一个mail,将回复的内容和附件发送到客户的邮箱.

通常发送带附件的邮件的方式为(使用System.Net.Mail):
首先添加引用:

using System.Net.Mail;

再编写发送mail代码:

 1        SmtpClient SmtpMail = new SmtpClient("127.0.0.1"); //127.0.0.1为发送邮件服务器IP.
 2        MailMessage sendMail = new MailMessage();
 3        sendMail.Subject = "测试发送带附件的邮件";  //邮件的主题
 4        sendMail.From = new MailAddress("sender@mail.com");  //发件人
 5        string strToUser = "receiver@mail.com";   //收件人
 6        string[] temp;
 7        if (strToUser != null && strToUser.Trim() != "")
 8        {
 9            temp = strToUser.Split();
10            for (int i = 0; i < temp.Length; i++)
11            {
12                sendMail.To.Add(new MailAddress(temp[i]));
13            }
14        }
15        sendMail.Body = "请注意附件.";   //邮件内容
16        sendMail.SubjectEncoding = System.Text.Encoding.UTF8;   //主题内容编码.
17        sendMail.BodyEncoding = System.Text.Encoding.UTF8;  //邮件内容编码.
18        sendMail.IsBodyHtml = true; //邮件内容支持HTML
19
20        string strPath = "E:\\foo.txt"; //要发送附件
21        if (strPath != null && strPath.Length != 0)
22        {
23            try
24            {
25                Attachment ma = new Attachment(strPath);
26                sendMail.Attachments.Add(ma);
27            }
28            catch
29            { }
30        }
31        SmtpMail.Send(sendMail);

这里因为附件被上传到了前台Server上,所以取得附件的方法需要改变了.

首先添加引用:

1using System.Net.Mail;
2using System.Net;
3using System.Net.Mime;
4using System.IO;

下面代码:

 1        SmtpClient SmtpMail = new SmtpClient("10.98.0.50"); //10.98.0.50为发送邮件服务器IP.
 2        MailMessage sendMail = new MailMessage();
 3        sendMail.Subject = "测试发送带附件的邮件";  //邮件的主题
 4        sendMail.From = new MailAddress("Sender@mail.com");  //发件人
 5        string strToUser = "Receiver@mail.com";   //收件人
 6        string[] temp;
 7        if (strToUser != null && strToUser.Trim() != "")
 8        {
 9            temp = strToUser.Split();
10            for (int i = 0; i < temp.Length; i++)
11            {
12                sendMail.To.Add(new MailAddress(temp[i]));  //CC.Add() 添加抄送,Bcc.Add() 添加暗送
13            }
14        }
15        sendMail.Body = "请注意附件.";   //邮件内容
16        sendMail.SubjectEncoding = System.Text.Encoding.UTF8;   //主题内容编码.
17        sendMail.BodyEncoding = System.Text.Encoding.UTF8;  //邮件内容编码.
18        sendMail.IsBodyHtml = true; //邮件内容支持HTML
19
20        string strPath = "http://10.98.0.18/fore/UploadFiles/File/128593509120029362699.doc"; //要发送附件的网址
21        string strFileName = strPath.Substring(strPath.LastIndexOf("/") + 1); ;   //文件名
22
23        WebClient wc = new WebClient();
24        MemoryStream m = new MemoryStream();
25
26        if (strFileName != "" && strFileName != null)
27        {
28            try
29            {
30                byte[] fs = wc.DownloadData(strPath);
31                m = new MemoryStream(fs);  //将文件抓取下来,存于内存中.
32
33                Attachment ma = new Attachment(m, strFileName);
34                sendMail.Attachments.Add(ma);
35                fs = null;
36            }
37            catch
38            { }
39        }
40
41        SmtpMail.Send(sendMail);
42        sendMail.Attachments.Dispose(); //邮件发送完毕,释放对附件的锁定
43        m.Dispose();
44        wc.Dispose();

补:

SmtpClient 请确保发送服务器地址正确,否则可能出现“由于目标机器积极拒绝,无法连接。”的错误;同时请确保端口正确,否则可能出现“远程主机强迫关闭了一个现有的连接”的错误。

现在的 SMTP 服务器,几乎都要求验证,通过 NetworkCredential 来发送用户名和密码。

SmtpClient smtp = new SmtpClient("SMTP 服务器地址");
smtp.Credentials = new NetworkCredential("登录名", "密码"); //SMTP 验证

转载于:https://www.cnblogs.com/alanliu/archive/2008/07/04/1235812.html

抓取网络文件的URL地址作附件发送相关推荐

  1. 【C#爬虫】抓取XX网站mp4资源地址

    抓取小视频的url地址,然后将地址信息拷贝到迅雷里批量下载就ok了 主程序 代码 //yazhouqingseAV 35//zhifusiwaAV 29//zipaishipin 30//oumeiq ...

  2. 抓取网络源码python_使用Python进行网络抓取的新手指南

    抓取网络源码python 有很多很棒的书可以帮助您学习Python,但是谁真正读了这些A到Z? (剧透:不是我). 接下来是我的第一个Python抓取项目指南. 假定的Python和HTML知识很少. ...

  3. 用C++实现网络编程---抓取网络数据包的实现方法

    From: http://blog.csdn.net/zjl_1026_2001/article/details/2191311 做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经 ...

  4. 如何手工抓取dump文件及分析

    在生产环境下进行故障诊断时,为了不终止正在运行的服务或应用程序,有两种方式可以对正在运行的服务或应用程序的进程进行分析和调试. 首先一种比较直观简洁的方式就是用WinDbg等调试器直接attach到需 ...

  5. 抓取网络源码python_python中的复仇者网络抓取实体提取和网络图

    抓取网络源码python 2020 sent more bad news as Black Panther star Chadwick Boseman passed away aged 43. The ...

  6. iOS—网络实用技术OC篇网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

  7. php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)

    采集邮箱的php代码(抓取网页中的邮箱地址) 复制代码 代码如下: $url='http://www.jb51.net'; //这个网页里绝对含有邮件地址. $content=file_get_con ...

  8. 服务器文件的url地址,服务器文件的url地址是什么

    服务器文件的url地址是什么 内容精选 换一换 使用外部镜像文件创建私有镜像时,以上相关步骤操作需要在虚拟机内部完成,强烈建议您在原平台的虚拟机实施修改后,再导出镜像.使用Windows外部镜像文件创 ...

  9. wireshark抓取网络聊天数据包

    练习wireshark抓取网络数据包.在两台及两台以上的电脑(已知IPv4地址)上运行 "疯狂聊天室"程序,通过wireshark抓包: 1)分析此程序网络连接采用的是哪种协议(T ...

最新文章

  1. 要毁灭人类、喷马斯克、还获得公民身份的Sophia,是假的
  2. Windows Server 2008常用优化设置
  3. 用TWaver加载大型游戏场景一例
  4. sketch浮动布局_使用智能布局和调整大小在Sketch中创建更好的可重用符号
  5. java类成员方法(成员函数)的初步介绍
  6. java eclipse 入门_Eclipse使用入门教程介绍
  7. 24. Swap Nodes in Pairs 1
  8. 迅雷5vip帐号获取器
  9. Raid5数据恢复算法原理- raid5数据恢复案例
  10. 大学三年来的心路历程分享
  11. 百度网盘四种方法免费提速
  12. 破解受限制的XLSM文档
  13. pandas:float divided by zero
  14. Boxy SVG for Mac版矢量图编辑软件
  15. 监听通知栏内容,获取通知栏消息,安卓原生SDK扩展
  16. LaTeX论文图片排版
  17. 【滤波估计】基于双卡尔曼滤波实现soc和soh联合估计附matlab代码
  18. 前端React 框架- UmiJS有听说过吗?
  19. 高中数学一轮复习;三角函数知识总结(提分技巧)
  20. php ucenter,Thinkphp整合Ucenter视频教程

热门文章

  1. 我的世界java版双海底神殿种子_我的世界海底神殿种子2021
  2. elementui datetimepicker 移动端_在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了
  3. 【java】浅谈注释
  4. 【Linux】 Linux简单操作之网络通信和网络访问
  5. Spring之注解方式实例化Java类
  6. python示例异常处理与程序调试_笔记:Python异常处理与程序调试
  7. iOS:一句代码实现文本输入的限制
  8. 贸易保护主义不能解决德国光伏企业的问题
  9. 全球SDN测试认证中心发布OpenDaylight测试报告
  10. 使用 Smartmontools 检测硬盘坏道