当前位置: 首页 > 编程日记 > 正文

抓取网络文件的URL地址作附件发送

最近公司的一个项目, 把网站的前后台分离到两个不同的服务器上(后台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

相关文章:

字符串类型String总结

1.String类&#xff1a; ①Java中&#xff0c;字符串是String类的对象&#xff1b; ②Java中&#xff0c;String是引用数据类型&#xff1b; ③可以通过使用String类提供的方法来完成对字符串的操作&#xff1b; ④创建一个字符串对象之后&#xff0c;将不能更改构成字符串的字…

C# Task注意事项

1、在Task中调用主线程控件 Task.Factory.StartNew(() > {}).ContinueWith(task > {this.Invoke(new Action(() > { MessageBox.Show(this, "执行完成"); })); }); 转载于:https://www.cnblogs.com/zhyue93/p/task1.html

CSS实现网页图片预加载

#preloadedImages {width:0px;height:0px;display:inline;background-image:url(path/to/image1.png);background-image:url(path/to/image2.png);background-image:url(path/to/image3.png);background-image:url(path/to/image4.png);background-image:url();}只要在HTML里加…

软件测试--利用组合覆盖法设计测试用例

输入条件如下&#xff1a; 姓名&#xff1a;填、不填 性别&#xff1a;男、女 学历&#xff1a;小学、初中、高中、专科、本科、硕士、博士 等级&#xff1a;普通、VIP PICT安装和使用

thinkpad 61系机器(T61 X61/X61S R61)休眠掉电问题解决办法

众多61系机器用户在待机状态下一晚上耗电10%-20%。去think服务站得到的帮助是换电池&#xff0c;换主板等实验性的办法均不能解决此问题。通过多次尝试&#xff0c;我找到了行之有效的办法与大家分享。 为满足Energy Star 4.0的标准,机器在休眠模式下,机器的一些功能,比如网络唤…

Linux必知必会的目录与启动过程

第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡的配置文件 [rootznix ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 HWADDR00:0c:29:cb:69:ee TYPEEthernet UUID38ad33ab-3d2b-4183-bd84-ce1766236ddd ONBOOTyes NM_CONTRO…

Oracle10g.CentOS6安装

1、文件 Oracle 10g 下载地址_Linux下载_Linux公社-Linux系统门户网站.html&#xff08;https://www.linuxidc.com/Linux/2012-02/55336.htm&#xff09; ZC&#xff1a;这里的下载链接基本都失效了...但是&#xff0c;可以看到 每个版本对应的文件名是什么&#xff0c;然后再根…

GridView中HyperLinkField的链接使用JavaScript问题

本来写好的程序&#xff0c;突然增加需求说要点链接以后刷新父页面并弹出窗口&#xff0c;弹出可以直接用Target属性&#xff0c;在网上查了查&#xff0c;DataNavigateUrlFields并不支持JavaScript&#xff0c;在别人博客上还找到了后台绑定数据的方法&#xff0c;感觉改动太大…

软件测试实验--性能测试工具LoadRunner

HP Loadrunner12的下载和安装 LoadRunner12.x简易入门教程--&#xff08;一&#xff09;回放与录制 打不开网页&#xff0c; 有脚本&#xff0c;没有关联实例&#xff0c;显示成功。 LoadRunner12安装及基本使用

sql server性能分析--执行sql次数和逻辑次数

目前在做一个项目优化时&#xff0c;想通过数据库层分析sql server系统性能&#xff0c;查了一下网上代码&#xff0c;修改了一下标题和DMVs代码&#xff0c;以下代码可以用来分析系统运行一段时间后&#xff0c;那些语句是系统忙的sql语句。做为参考。 另类使用&#xff1a; 一…

PHP-----PHP程序设计基础教程----第四章数组

4.1 初识数组 4.1.1 什么是数组 数组是一个可以存储一组或者一系列数值的变量。在PHP中&#xff0c;数组中的元素分两部分&#xff0c;分别为键&#xff08;Key&#xff09;和值&#xff08;Value&#xff09;。其中&#xff0c;“键”为元素的识别名称&#xff0c;也被称为数组…

spark编程基础--2.2scala基础知识

&#xff1a;load 读写文件 for循环表达式 对循环的控制breakable 数据结构--数组 数据结构--元祖 数据结构--列表 Range 集合 - 可变的集合可以在原集合上进行添加、更新及删除元素。 - 不可变集合一旦被创建便不能被改变&#xff0c;添加、更新及删除操作返回的是新的集合&…

BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)

【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id3483 【题目大意】 给出一些串&#xff0c;同时给出m对前缀后缀&#xff0c;询问有多少串满足给出的前缀后缀模式&#xff0c;   题目要求强制在线 【题解】 我们对于给出的每个字符串正着插入字典树A&#xf…

石英晶体振荡器的结构

石英晶体振荡器的结构 石英晶体振荡器是利用石英晶体&#xff08;二氧化硅的结晶体&#xff09;的压电效应制成的一种谐振器件&#xff0c;它的基本构成大致是&#xff1a;从一块石英晶体上按一定方位角切下薄片&#xff08;简称为晶片&#xff0c;它可以是正方形、矩形或圆形等…

坐班族如何摆脱粗壮大腿

对于很多office lady来说一天可能会在办公室坐上八个小时甚至更多的时间&#xff0c;慢慢地会发现大腿越来越粗壮&#xff0c;其实只要认清你大腿的问题真正出在哪里&#xff1f;用一些简单的运动甚至改变坐姿&#xff0c;都可以达到阻止大腿变粗的效果……一起来看看吧&#x…

spark编程基础--2.3面向对象编程基础

类 对象 继承 参数化类型 特质 模式匹配&#xff08;match case类&#xff09; 包 类的定义 构造器 //代码文件为/usr/local/scala/mycode/Counter2.scala class Counter {private var value 0 private var name "" private var step 1 //计算器的默认递进步长 …

网络编程物理层

osi七层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层 每层运行常见的物理设备 我们将应用层&#xff0c;表示层&#xff0c;会话层并作应用层&#xff0c;从tcp&#xff0f;ip五层协议的角度来阐述每层的由来与功能&#xff0c;搞清楚了每层的主要协议 就理…

2017高级软件工程第1次作业

第一部分&#xff1a;结缘计算机 1.你为什么选择计算机专业&#xff1f;你认为你的条件如何&#xff1f;和这些博主比呢&#xff1f; 说起来也是阴差阳错&#xff0c;高考填志愿的时候考虑的是当时最火的3个专业&#xff1a;机械、土木、电气。只知道哎呀这个专业好&#xff0c…

微软图表控件MsChart

转自&#xff1a;http://tech.ddvip.com/2008-11/122640479791375.html 昨天在网上看到了微软发布了.NET 3.5框架下的图表控件&#xff0c;第一时间抓下来看了一下&#xff0c;发觉功能很强劲&#xff0c;基本上能想到的图表都可以使用它绘制出来&#xff0c;给图形统计和报表图…

方案里最常用的集群拓扑图(包含:多机集群、负载均衡、双机)

1、san.JPG2、SAN集群.JPG3、不同楼层双机热备.JPG4、纯软双机.JPG5、纯软双机热备备份恢复2.jpg6、多机集群与备份.jpg7、负载均衡.jpg8、负载均衡之数据库均衡.JPG9、工控.JPG10、监控.bmp11、监控应用&#xff08;SCSI&#xff09;.JPG12、容灾.JPG13、双机热备备份恢复1.jp…

基于最短路方法的生物序列比对问题研究

概述 作为生物信息学中的基本组成和重要基础&#xff0c;生物序列比对旨在找出两个或多个生物序列之间的相似性&#xff0c;发现生物序列中的功能、结构和进化信息。 生物序列比对在现实生活中有广泛的应用价值。从核酸和蛋白质序列出发,分析序列中表达结构和功能的生物信息&am…

NOI2003文本编辑器

problem 传送门 Solution 块状链表板子题…… 码了一下午&#xff0c;调了一晚上&#xff0c;代码重构了3遍&#xff0c;在终于过了。 还是太菜了。 移动光标的操作直接模拟即可。 插入操作&#xff0c;先将光标所在块分裂成两块&#xff0c;然后直接插入。 删除操作直接将边角…

spark编程基础--2.4函数式编程基础

foreach遍历操作 映射操作map,flatmap 过滤操作filter 规约操作 reduce,fold方法 拆分操作partition,groupedBy,grouped,sliding Scala入门&#xff1a;函数式编程实例WordCount import java.io.File import scala.io.Source import collection.mutable.Map object WordCount …

开始一点点写博客

今天被老樊问了几个基础的问题&#xff0c;都没回答上来&#xff01;惭愧啊&#xff01;所以决定用博客的方式来记录在学习中的问题以便好复习&#xff0c;增强记忆&#xff01;转载于:https://www.cnblogs.com/MoShin/archive/2008/11/29/1343593.html

无人值守安装win2003+sp2的补丁

1. 无人值守安装win2003sp2的补丁<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />2. 思路&#xff1a; l 第一我们做把sp2的补丁集成到win2003的光盘中l 创建生成无人值守并加载到光盘中l …

构建安全的 ASP.NET 网页和控件

本页内容 本模块内容目标适用范围如何使用本模块威胁和对策设计注意事项输入验证跨站点脚本身份验证授权模拟敏感数据会话管理参数处理异常管理审核和日志记录小结其他资源本模块内容 Web 页和控件位于应用程序的防御前线&#xff0c;它们很容易受到蓄意破坏应用程序安全的攻击…

IDEA新建一个多maven模块工程(有图)

对于一些大型的项目来说&#xff0c;将项目的各个模块理清并进行管理&#xff0c;便于后续项目的维护&#xff0c;使用maven管理是很方便的&#xff0c;它可以很好的构建模块来设计项目的整体结构&#xff0c;对一些小型的项目不建议使用 1、新建父maven模块&#xff08;idea版…

windows10上使用一个tomcat部署2个项目

前言&#xff1a;目前想在本机部署2个项目&#xff0c;网上查了之后&#xff0c;写下本篇随笔 1、准备工作 2、操作方法 3、运行2个项目 1、准备工作 2个war包&#xff08;一个jprss.war和一个jenkins.war&#xff09; 1个tomcat环境 2、操作方法 第一步&#xff1a;复制tomcat…

spark编程基础--4.2在spark-shell中运行代码

启动spark-shell Spark2.1.0入门&#xff1a;Spark的安装和使用 通过spark-submit运行程序

不经历风雨,怎么能见彩虹!马克斯与我的不解之缘!

从***到站长总结经验&#xff08;让你IP飞速飙升的秘诀&#xff09;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />第一章&#xff1a;站长的梦想&#xff01;&#xff01;&#xff01;接触网络比较早&#xff0c;但是真正学到…