小弟做了一个用web.mail.mailmessage发送邮件的程序,后来在一部机上运行时发现发不出,提示“未能访问“CDO.Message”对象”的错误,可能是因为那部机器的需要设置代理服务器才能上网的问题,请问有什么方法可以在程序里设置代理服务器和端口呢?请指教!!!
解决方案 »
- 为什么我不实现IEnumerable接口一样可以用foreach
- 软件测试需要注意什么?
- this.lblMsg.text+=this.*****中的+是什么作用?
- TreeView css
- net.mail发送邮件在服务器上失败
- 如何去除用Graphics在picturebox上画的线?
- 《SqlServer日志清除专家 v2.0》最新发布,请大家及时更新! up有分!
- 怎样在我的项目里加上ie的功能?有控件吗?怎么加入?
- 关于DropDownList事件问题,
- 哪个方法用来显示输入对话框?
- Visual C#.NET创建的BS结构项目,怎样让代码文件目录和网页目录分开?
- 如何让鼠标在移动时获取其指向位置的窗口(控件)的句柄?
GlobalProxySelection 存储默认代理的代理设置,WebRequest 实例使用此代理与本地网络以外的 Internet 站点联系。默认代理设置通过全局配置文件或应用程序配置文件初始化,对于个别的请求可被重写,或通过将 HttpWebRequest.Proxy 属性设置为 GetEmptyWebProxy 方法的结果被禁用。存储在 GlobalProxySelection 中的代理设置由任何 Proxy 属性未设置为其他值的 HttpWebRequest 实例使用。注意 发出请求后所做的 GlobalProxySelection 更改不在 WebRequest 中反映出来。
示例
[Visual Basic, C#] 下面的示例为端口 80 上名为“webproxy”的 HTTP 代理设置 GlobalProxySelection。[Visual Basic]
Dim proxyURI As New Uri("http://webproxy:80")
GlobalProxySelection.Select = New WebProxy(proxyURI)[C#]
Uri proxyURI = new Uri("http://webproxy:80");
GlobalProxySelection.Select = new WebProxy(proxyURI);
http://www.systemwebmail.com/default.aspx
请问您做的程序能把邮件发送到163的邮箱里吗?我的不能。如果您的能的话,请您指教,在线等着您的帮助,谢谢。
原来你也有这个问题,我做的程序用我的163的邮箱发不出去,后来改了用126的才可以,也不知道为什么。另外,我那个问题还没有解决,还请高手指教!
using System.Collections;
using System.Net.Sockets;
using System.IO;
using System.Text;namespace Edu.Stu.Common.Mail
{
///<summary>
/// Module ID:0005
/// Depiction:发送邮件,支持ESMTP, 多附件
/// Wreter:Nick
/// Create Date;2004-12-20
///</summary>
public class MailSender
{ #region "Fields"
private string m_strFromName = "";
private string[] m_strTo = null;
private string m_strFrom = "";
private string m_strPassWord = "";
private string m_strUserName = "";
private int m_iPort = 25;
private string m_strServer = "";
private int m_iPriority = 3;
private string m_strEncoding = "8bit";
private string m_strLanguageEncoding = "GB2312";
private bool m_bIsHtml = true;
private string m_strHtmlBody = "";
private string m_strTxtBody = "";
private string m_strSubject = "";
private string m_strToName = "";
private ArrayList m_alAttachments = new ArrayList ();
#endregion #region "Propertes"
/// <summary>
/// SMTP服务器域名
/// </summary>
public string Server
{
get { return m_strServer; }
set { if (value != m_strServer) m_strServer = value; }
}
/// <summary>
/// SMTP服务器端口 [默认为25]
/// </summary>
public int Port
{
get { return m_iPort; }
set { if (value != m_iPort) m_iPort = value; }
} /// <summary>
/// 用户名 [如果需要身份验证的话]
/// </summary>
public string UserName
{
get { return m_strUserName; }
set { if (value != m_strUserName) m_strUserName = value; }
} /// <summary>
/// 密码 [如果需要身份验证的话]
/// </summary>
public string Password
{
get { return m_strPassWord; }
set { if (value != m_strPassWord) m_strPassWord = value; }
} /// <summary>
/// 发件人地址
/// </summary>
public string From
{
get { return m_strFrom; }
set { if (value != m_strFrom) m_strFrom = value;}
} /// <summary>
/// 收件人地址
/// </summary>
public string[] To
{
get { return m_strTo; }
set { if (value != m_strTo) m_strTo = value;}
} /// <summary>
/// 发件人姓名
/// </summary>
public string FromName
{
get { return m_strFromName; }
set { if (value != m_strFromName) m_strFromName = value; }
} /// <summary>
/// 收件人姓名
/// </summary>
public string ToName
{
get { return m_strToName; }
set { if (value != m_strToName) m_strToName = value; }
}
/// <summary>
/// 邮件的主题
/// </summary>
public string Subject
{
get { return m_strSubject; }
set { if (value != m_strSubject) m_strSubject = value; }
} /// <summary>
/// 邮件正文
/// </summary>
public string Body
{
get { return m_strTxtBody; }
set { if (value != m_strTxtBody) m_strTxtBody = value; }
} /// <summary>
/// 超文本格式的邮件正文
/// </summary>
public string HtmlBody
{
get { return m_strHtmlBody; }
set { if (value != m_strHtmlBody) m_strHtmlBody = value; }
} /// <summary>
/// 是否是html格式的邮件
/// </summary>
public bool IsHtml
{
get { return m_bIsHtml; }
set { if (value != m_bIsHtml) m_bIsHtml = value; }
} /// <summary>
/// 语言编码 [默认为GB2312]
/// </summary>
public string LanguageEncoding
{
get { return m_strLanguageEncoding; }
set { if (value != m_strLanguageEncoding) m_strLanguageEncoding = value; }
} /// <summary>
/// 邮件编码 [默认为8bit]
/// </summary>
public string MailEncoding
{
get { return m_strEncoding; }
set { if (value != m_strEncoding) m_strEncoding = value; }
} /// <summary>
/// 邮件优先级 [默认为3]
/// </summary>
public int Priority
{
get { return m_iPriority; }
set { if (value != m_iPriority) m_iPriority = value; }
} /// <summary>
/// 附件 [AttachmentInfo]
/// </summary>
public IList Attachments
{
get { return m_alAttachments; }
// set { if (value != m_alAttachments) m_alAttachments = value; }
}
#endregion #region "Struct AttachmentInfo"
/// <summary>
/// 附件信息
/// </summary>
public struct AttachmentInfo
{
/// <summary>
/// 附件的文件名 [如果输入路径,则自动转换为文件名]
/// </summary>
public string FileName
{
get { return fileName; }
set { fileName = Path.GetFileName(value); }
} private string fileName; /// <summary>
/// 附件的内容 [由经Base64编码的字节组成]
/// </summary>
public string Bytes
{
get { return bytes; }
set { if (value != bytes) bytes = value; }
} private string bytes;
/// 从流中读取附件内容并构造
/// </summary>
/// <param name="p_strFileName">附件的文件名</param>
/// <param name="p_stream">流</param>
public AttachmentInfo (string p_strFileName, Stream p_stream)
{
fileName = Path.GetFileName (p_strFileName);
byte[] by = new byte [p_stream.Length];
p_stream.Read (by,0,(int)p_stream.Length); // 读取文件内容
//格式转换
bytes = Convert.ToBase64String (by); // 转化为base64编码
} /// <summary>
/// 按照给定的字节构造附件
/// </summary>
/// <param name="p_strFileName">附件的文件名</param>
/// <param name="ibytes">附件的内容 [字节]</param>
public AttachmentInfo (string p_strFileName, byte[] ibytes)
{
fileName = Path.GetFileName (p_strFileName);
bytes = Convert.ToBase64String (ibytes); // 转化为base64编码
} /// <summary>
/// 从文件载入并构造
/// </summary>
/// <param name="p_strPath"></param>
public AttachmentInfo (string p_strPath)
{
fileName = Path.GetFileName (p_strPath);
FileStream file = new FileStream (p_strPath, FileMode.Open);
byte[] by = new byte [file.Length];
file.Read (by,0,(int)file.Length); // 读取文件内容
//格式转换
bytes = Convert.ToBase64String (by); // 转化为base64编码
file.Close ();
}
}
#endregion #region "Functions"
/// <summary>
/// 发送邮件
/// </summary>
private void SendMail()
{
// 创建TcpClient对象, 并建立连接
TcpClient tcpNewClient = null;
try
{
tcpNewClient = new TcpClient (m_strServer, m_iPort);
}
catch (Exception)
{
throw new Exception ("无法连接服务器");
}
ReadString (tcpNewClient.GetStream());//获取连接信息 // 开始进行服务器认证
// 如果状态码是250则表示操作成功
if (!Command (tcpNewClient.GetStream(), "EHLO Localhost", "250"))
{
tcpNewClient.Close();
throw new Exception ("登陆阶段失败");
} if (m_strUserName != "")
{
// 需要身份验证
if (!Command (tcpNewClient.GetStream(), "AUTH LOGIN", "334"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
}
// 此处将username转换为Base64码
string nameB64 = ToBase64 (m_strUserName);
if (!Command (tcpNewClient.GetStream(), nameB64, "334"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
}
// 此处将m_strPassWord转换为Base64码
string passB64 = ToBase64 (m_strPassWord);
if (!Command (tcpNewClient.GetStream(), passB64, "235"))
{
tcpNewClient.Close();
throw new Exception ("身份验证阶段失败");
}
}
对不起啊......邮件不能发,应该是smtp服务器地址不对(当然前提是程序没有问题),你可以先telnet一下,如果可以,应该可以发,如果不行就不可以,
比如:telnet smtp.163.com 25
telnet smtp.sohu.com 25
以前可以的(大概是5月份左右,163、搜狐都可以,现在不行了。)