因为不太了解notes服务器的原理和设置,所以文的有点傻
说明一下,notes服务器在国外,公司内部发送都是不经过国外服务器的,是通过内部服务器可以实现收发邮件,如果向因特网上发送邮件,需要通过国外服务器。
现在我写了一个有邮件发送功能的软件,连接着内网,但是没有连接外网,现在想向notes邮箱发送邮件,目前还没有实现。求助各位大侠有知道怎么实现的没?
备注:连接到因特网可实现发送邮件到outlook或因特网邮箱或notes主要代码为:using System;
using System.Data;
using System.Data.Odbc;
using System.Collections;
using System.Net.Mail;
using System.Net;namespace AAA
{
/// <summary>
/// clsEmail 的摘要说明。
/// </summary>
public class clsEmail
{
public static string mstrErrorMsg = ""; public static string mstrSmtpServer = ""; public static int miPort = 25; public static string mstrMailFrom; public static string mstrMailSender; public ArrayList marrFiles = new ArrayList(); public MailMessage mail = new MailMessage(); public static NetworkCredential objNetworkCredential = new NetworkCredential(); /// <summary>
/// 获取或设置收信人Email地址列表,以Arrlist设置或获取;
/// </summary>
public MailAddressCollection MailTo
{
get
{
return mail.To;
} } /// <summary>
/// 获取或设置抄送者Email地址列表,以Arrlist设置或获取;
/// </summary>
public MailAddressCollection CopyToWithSender
{
get
{
return mail.CC;
} } /// <summary>
/// 获取或设置暗送者Email地址列表,以Arrlist设置或获取
/// </summary>
public MailAddressCollection CopyToWithoutSender
{
get
{
return mail.Bcc;
} } /// <summary>
/// 获取或设置发送者电子邮件地址,用于对方回复时使用
/// </summary>
public string MailFrom
{
get
{
return mstrMailFrom;
}
set
{
if (value != null && value != "")
{
mstrMailFrom = value;
}
}
} /// <summary>
/// 获取或设置发送者名称,仅用于邮件显示
/// </summary>
public string Sender
{
get
{
return mstrMailSender;
}
set
{
if (value != null && value != "")
{
mstrMailSender = value;
}
}
} /// <summary>
/// 获取或设置发送邮件的帐号名称
/// </summary>
public string MailAccount
{
get
{
return objNetworkCredential.UserName;
}
set
{
if (value != null && value.IndexOf('@') != -1 && value.IndexOf('.') != -1)
{
objNetworkCredential.UserName = value;
} }
} /// <summary>
/// 获取或设置发送邮件帐号的密码
/// </summary>
public string MailAccountPwd
{
get
{
return objNetworkCredential.Password;
}
set
{
if (value != null)
{
objNetworkCredential.Password = value;
}
}
} /// <summary>
/// 获取或设置要发送邮件的正文
/// </summary>
public string MailBody
{
get
{
return mail.Body;
}
set
{
if (value != null)
{
mail.Body = value;
}
}
}
/// <summary>
/// 获取或设置要发送邮件的主题
/// </summary>
public string MailSubject
{
get
{
return mail.Subject;
}
set
{
if (value != null)
{
mail.Subject = value;
}
}
} /// <summary>
/// 获取或增加邮件的附件列表
/// </summary>
public ArrayList FileNames
{
get
{
return marrFiles;
} } /// <summary>
/// 获取或设置发送邮件的Smtp服务器
/// </summary>
public string SmtpServer
{
get
{
return mstrSmtpServer;
}
set
{
if (value != null && value.Trim() != "")
{
mstrSmtpServer = value;
}
}
} /// <summary>
/// 获取或设置Smtp服务器的通讯端口,默认值: 25
/// </summary>
public int SmtpPort
{
get
{
return miPort;
}
set
{
if (value > 0 && value < 65536)
{
miPort = value;
}
}
} /// <summary>
/// 获取错误信息
/// </summary>
public string ErrorMsg
{
get
{
return mstrErrorMsg;
} } /// <summary>
/// 设置完所有发送信息,就可以用这个方法进行发送了
/// </summary>
/// <returns>如果发送信息设置有误将返回false,详细的错误信息可以在属性ErrorMsg中获得;\n发送成功返回true;</returns>
public bool SendEmail()
{
if (mstrSmtpServer == "")
{
mstrErrorMsg = "Smtp服务器设置不正确!";
return false; }
if (objNetworkCredential.UserName == "")
{
mstrErrorMsg = "用于发送邮件的帐号设置不正确!";
return false;
}
if (mstrMailFrom == "")
{
mstrErrorMsg = "发送者名称设置不正确!";
return false; } SmtpClient objSmtpClient = new SmtpClient(); try
{
foreach (string strfileName in marrFiles)
{
Attachment objAtt = new Attachment(strfileName);
mail.Attachments.Add(objAtt);
} System.Net.Mail.MailAddress objAddrFrom = new MailAddress(mstrMailFrom);
System.Net.Mail.MailAddress objAddrSender;
if (mstrMailSender != "")
{
objAddrSender = new MailAddress(mstrMailSender);
}
else
{
objAddrSender = new MailAddress(mstrMailFrom);
} mail.From = objAddrFrom;
mail.Sender = objAddrSender; objSmtpClient.Host = mstrSmtpServer;
objSmtpClient.Credentials = objNetworkCredential;
objSmtpClient.Port = miPort; objSmtpClient.Send(mail); mstrErrorMsg = "发送邮件成功!";
return true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message + ex.StackTrace);
mstrErrorMsg = "发送失败!原因:" + ex.Message;
return false;
} }
}
}
说明一下,notes服务器在国外,公司内部发送都是不经过国外服务器的,是通过内部服务器可以实现收发邮件,如果向因特网上发送邮件,需要通过国外服务器。
现在我写了一个有邮件发送功能的软件,连接着内网,但是没有连接外网,现在想向notes邮箱发送邮件,目前还没有实现。求助各位大侠有知道怎么实现的没?
备注:连接到因特网可实现发送邮件到outlook或因特网邮箱或notes主要代码为:using System;
using System.Data;
using System.Data.Odbc;
using System.Collections;
using System.Net.Mail;
using System.Net;namespace AAA
{
/// <summary>
/// clsEmail 的摘要说明。
/// </summary>
public class clsEmail
{
public static string mstrErrorMsg = ""; public static string mstrSmtpServer = ""; public static int miPort = 25; public static string mstrMailFrom; public static string mstrMailSender; public ArrayList marrFiles = new ArrayList(); public MailMessage mail = new MailMessage(); public static NetworkCredential objNetworkCredential = new NetworkCredential(); /// <summary>
/// 获取或设置收信人Email地址列表,以Arrlist设置或获取;
/// </summary>
public MailAddressCollection MailTo
{
get
{
return mail.To;
} } /// <summary>
/// 获取或设置抄送者Email地址列表,以Arrlist设置或获取;
/// </summary>
public MailAddressCollection CopyToWithSender
{
get
{
return mail.CC;
} } /// <summary>
/// 获取或设置暗送者Email地址列表,以Arrlist设置或获取
/// </summary>
public MailAddressCollection CopyToWithoutSender
{
get
{
return mail.Bcc;
} } /// <summary>
/// 获取或设置发送者电子邮件地址,用于对方回复时使用
/// </summary>
public string MailFrom
{
get
{
return mstrMailFrom;
}
set
{
if (value != null && value != "")
{
mstrMailFrom = value;
}
}
} /// <summary>
/// 获取或设置发送者名称,仅用于邮件显示
/// </summary>
public string Sender
{
get
{
return mstrMailSender;
}
set
{
if (value != null && value != "")
{
mstrMailSender = value;
}
}
} /// <summary>
/// 获取或设置发送邮件的帐号名称
/// </summary>
public string MailAccount
{
get
{
return objNetworkCredential.UserName;
}
set
{
if (value != null && value.IndexOf('@') != -1 && value.IndexOf('.') != -1)
{
objNetworkCredential.UserName = value;
} }
} /// <summary>
/// 获取或设置发送邮件帐号的密码
/// </summary>
public string MailAccountPwd
{
get
{
return objNetworkCredential.Password;
}
set
{
if (value != null)
{
objNetworkCredential.Password = value;
}
}
} /// <summary>
/// 获取或设置要发送邮件的正文
/// </summary>
public string MailBody
{
get
{
return mail.Body;
}
set
{
if (value != null)
{
mail.Body = value;
}
}
}
/// <summary>
/// 获取或设置要发送邮件的主题
/// </summary>
public string MailSubject
{
get
{
return mail.Subject;
}
set
{
if (value != null)
{
mail.Subject = value;
}
}
} /// <summary>
/// 获取或增加邮件的附件列表
/// </summary>
public ArrayList FileNames
{
get
{
return marrFiles;
} } /// <summary>
/// 获取或设置发送邮件的Smtp服务器
/// </summary>
public string SmtpServer
{
get
{
return mstrSmtpServer;
}
set
{
if (value != null && value.Trim() != "")
{
mstrSmtpServer = value;
}
}
} /// <summary>
/// 获取或设置Smtp服务器的通讯端口,默认值: 25
/// </summary>
public int SmtpPort
{
get
{
return miPort;
}
set
{
if (value > 0 && value < 65536)
{
miPort = value;
}
}
} /// <summary>
/// 获取错误信息
/// </summary>
public string ErrorMsg
{
get
{
return mstrErrorMsg;
} } /// <summary>
/// 设置完所有发送信息,就可以用这个方法进行发送了
/// </summary>
/// <returns>如果发送信息设置有误将返回false,详细的错误信息可以在属性ErrorMsg中获得;\n发送成功返回true;</returns>
public bool SendEmail()
{
if (mstrSmtpServer == "")
{
mstrErrorMsg = "Smtp服务器设置不正确!";
return false; }
if (objNetworkCredential.UserName == "")
{
mstrErrorMsg = "用于发送邮件的帐号设置不正确!";
return false;
}
if (mstrMailFrom == "")
{
mstrErrorMsg = "发送者名称设置不正确!";
return false; } SmtpClient objSmtpClient = new SmtpClient(); try
{
foreach (string strfileName in marrFiles)
{
Attachment objAtt = new Attachment(strfileName);
mail.Attachments.Add(objAtt);
} System.Net.Mail.MailAddress objAddrFrom = new MailAddress(mstrMailFrom);
System.Net.Mail.MailAddress objAddrSender;
if (mstrMailSender != "")
{
objAddrSender = new MailAddress(mstrMailSender);
}
else
{
objAddrSender = new MailAddress(mstrMailFrom);
} mail.From = objAddrFrom;
mail.Sender = objAddrSender; objSmtpClient.Host = mstrSmtpServer;
objSmtpClient.Credentials = objNetworkCredential;
objSmtpClient.Port = miPort; objSmtpClient.Send(mail); mstrErrorMsg = "发送邮件成功!";
return true;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message + ex.StackTrace);
mstrErrorMsg = "发送失败!原因:" + ex.Message;
return false;
} }
}
}
解决方案 »
- 图表的X轴展示混乱
- 怎样把丹这种编码转成中文?C#有自带的吗
- 怎么将参数做方法名使用?
- 上传图片的代码,是哪错了?
- .net2005如果在实现?
- 用户控件,click事件的问题!!!!!!!!着急!!!!!!!!
- ImageFormat: b96b3cae-0728-11d3-9d7b-0000f81ef32e这是什么格式?应该是个jpeg图片的啊!
- C#代码怎样连接到Crystal Reports 9
- 在vs.net2003中运行c#的问题
- 如何查DataSet中是几行记录?
- 请教:如何将数据库中数据填充进包含xml架构的dataset
- 原创C#三层结构代码生成器(附六层结构生成器),在使用中提出合理建议者将获得源程序!
可以确认,任何邮件系统都是支持pop3和smtp 服务的,所以,只要是基于这些协议的,就可以进行正常运行。
只要是可以发送成功,就说明代码这一块没问题,如果有问题,可以看看是其他的问题。