下面贴上我的代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
收件人:<asp:TextBox ID="txt_toman" runat="server"></asp:TextBox>
<br />
主题:<asp:TextBox ID="txt_title" runat="server"></asp:TextBox>
<br />
内容:<asp:TextBox ID="txt_content" runat="server" Height="66px"
TextMode="MultiLine" Width="194px"></asp:TextBox>
<br />
附件:<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button ID="btn_send" runat="server" onclick="btn_send_Click"
Text=" Send " />
<asp:Label ID="lbl_mag" runat="server" ForeColor="Red"></asp:Label>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Text;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_send_Click(object sender, EventArgs e)
{
bool flag = SendMail("发信人地址", "发信人", "用户名", "密码", txt_title.Text, txt_content.Text, txt_toman.Text, FileUpload1);
if (flag)
{
lbl_mag.Text = "发送成功";
}
else
{
lbl_mag.Text = "糟糕,发送失败啦!";
}
}
/// <summary>
/// 简单邮件发送器
/// </summary>
/// <param name="user">发信人地址</param>
/// <param name="who">发信人</param>
/// <param name="name">发送用户名</param>
/// <param name="pwd">用户名密码</param>
/// <param name="title">邮件标题</param>
/// <param name="body">发送内容</param>
/// <param name="shoujian">收件人地址</param>
/// <param name="file">附件</param>
/// <returns>是否发送成功</returns>
public static bool SendMail(string user, string who, string name, string pwd, string title, string body, string shoujian, FileUpload file)
{
MailMessage Message = new MailMessage(
new MailAddress(user, //第一个是发信人的地址,
who, //第二个参数是发信人
Encoding.UTF8), //编码
new MailAddress(shoujian));//收信人邮箱
if (file.HasFile)
{
//添加附件
Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
}
Message.SubjectEncoding = Encoding.UTF8;
Message.Subject = title;//标题
Message.BodyEncoding = Encoding.UTF8;
Message.IsBodyHtml = true;
Message.Body = body; //主体
Message.Priority = MailPriority.High;
SmtpClient smtpClient = new SmtpClient("smtp.163.com", 25);
//邮件信箱服务器 //发送端口
smtpClient.Credentials = new System.Net.NetworkCredential(name, pwd);
//用户名 //用户名密码
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.Timeout = 99999;
try
{
smtpClient.Send(Message);
return true;
}
catch (Exception)
{
return false;
}
}
}
}
求大侠,帮忙解决~~~
26 个解决方案
#1
顶
#2
楼主,我看你的代码,你上传附件的时候怎么上传的呢。难道就把一个文件名给你的附件对象就可以了?我晕你哦、 我不知道邮件附件对象需要什么,再怎么也是传一个文件流给附件吧。
#3
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
#4
#5
#6
+1
论坛签名======================================================================
lz00728:你好!
截至 2011-10-25 09:54:58 前:
你已发帖 9 个, 未结贴 0 个;
结贴率为: 100.00%
当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html
如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
#7
楼主还不结贴给分
#8
问题还没解决啊
#9
我的天,我不是给你说了么
#10
你说的这里?? file.PostedFile.InputStream 有异常啊
#11
我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?
#12
file.PostedFile 不是null啊
#13
我的天,那是什么异常嘛
#14
if (file.HasFile)
{
//添加附件
Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
Message.Attachments.Add(attachment);
}
{
//添加附件
Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
Message.Attachments.Add(attachment);
}
#15
很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt
#16
问你什么错啊
#17
打个我不是给你说了吗。叫你改成我给你的代码file.PostedFile.InputStream,你用filaName有鸟用啊。用户的文件地址在你的服务器上还能找到这个文件?你想想原理吧。oh my god
#18
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件
#19
不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
#20
上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧
#21
能不能给个代码咯
#22
楼主我都给你说了怎么做了,哎,我真替你揪心啊
#23
Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
Message.Attachments.Add(attachment);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
Message.Attachments.Add(attachment);
#24
你早贴代码嘛,我心太急了不知道到底改哪里啊
#25
给分吧。哈哈哈
#26
#1
顶
#2
楼主,我看你的代码,你上传附件的时候怎么上传的呢。难道就把一个文件名给你的附件对象就可以了?我晕你哦、 我不知道邮件附件对象需要什么,再怎么也是传一个文件流给附件吧。
#3
好吧。楼主我来解救你。你在构造附件对象的时候,参数给这个file.PostedFile.InputStream
#4
#5
#6
+1
论坛签名======================================================================
lz00728:你好!
截至 2011-10-25 09:54:58 前:
你已发帖 9 个, 未结贴 0 个;
结贴率为: 100.00%
当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html
如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
如何给自己的回帖中也加上签名?
http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
#7
楼主还不结贴给分
#8
问题还没解决啊
#9
我的天,我不是给你说了么
#10
你说的这里?? file.PostedFile.InputStream 有异常啊
#11
我晕你哦。反正做法是这样的。什么异常?你的file.PostedFile是null吧?
#12
file.PostedFile 不是null啊
#13
我的天,那是什么异常嘛
#14
if (file.HasFile)
{
//添加附件
Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
Message.Attachments.Add(attachment);
}
{
//添加附件
Attachment attachment = new Attachment(file.PostedFile.FileName);//代码就是运行到这里报错了
Message.Attachments.Add(attachment);
}
#15
很郁闷,报的是这个错误
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt
未能找到文件“C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\asp.net下载文件.txt”。
可是我FileUpload浏览的是F盘下面的asp.net下载文件.txt
#16
问你什么错啊
#17
打个我不是给你说了吗。叫你改成我给你的代码file.PostedFile.InputStream,你用filaName有鸟用啊。用户的文件地址在你的服务器上还能找到这个文件?你想想原理吧。oh my god
#18
file.PostedFile.FileName是文件在客户端上的路径,而你的那些代码都运行在服务端,肯定出问题了
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件
先把文件临时保存到服务器SaveAs(fullPath),然后用服务端的保存路径添加附件
#19
不用在服务端再保存一次,完全没有必要,直接把上传的文件指向的文件流给你的附件对象就行了。
#20
上传到服务器这样不好吧,每次都上传那服务器里面的文件很多,不过也可以用程序删除吧
#21
能不能给个代码咯
#22
楼主我都给你说了怎么做了,哎,我真替你揪心啊
#23
Attachment attachment = new Attachment(file.PostedFile.FileName);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
Message.Attachments.Add(attachment);
Message.Attachments.Add(attachment);
这是你的代码。换成这个
Attachment attachment = new Attachment(file.PostedFile.InputStream,"your name");
Message.Attachments.Add(attachment);
#24
你早贴代码嘛,我心太急了不知道到底改哪里啊
#25
给分吧。哈哈哈