为什么wince上发送hotmail的邮件失败,别的邮件测试可以是可以发送成功的;电脑端上测试软件测试的hotmail邮件是可以发送成功的

qq_22216365 2018-08-21 02:11:10
电脑端软件截图

电脑端测试软件的主要代码
private void btnSend_Click_1(object sender, EventArgs e)
{

try
{
//确定smtp服务器地址。实例化一个Smtp客户端
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(txt_Smtp.Text, Convert.ToInt32(txt_prot.Text));

//构造一个发件人地址对象
MailAddress from = new MailAddress(txtUserName.Text, txt_prot.Text, Encoding.UTF8);
//构造一个收件人地址对象
MailAddress to = new MailAddress(txtEmail.Text, txtToName.Text, Encoding.UTF8);

//构造一个Email的Message对象
MailMessage message = new MailMessage(from, to);
//设置邮件的信息
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = false;

//设置用户名和密码。
//string userState = message.Subject;
client.UseDefaultCredentials =false;
string username = txtUserName.Text;
string passwd = txtPassword.Text;
//用户登陆信息
NetworkCredential myCredentials = new NetworkCredential(username, passwd);
client.Credentials = myCredentials;
if (txt_prot.Text == "25")
{
//关闭证书验证
ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
client.EnableSsl = false;
}
else
{
client.EnableSsl = true;
}
client.Send(message);


部署wince中的主要代码
public void SendTest(string emailmessage)
{
try
{
this.FullKeyboard.Visible = false;
this.symbolKeyboard1.Visible = false;
string smtp = txt_Send.Text;
string domain = smtp.Substring(smtp.IndexOf('@') + 1);
string host = "smtp." + domain;
Int32 Port = 0;
switch (domain)
{
case "gmail.com":

Port = 465;
break;
case "hotmail.com":
host = "smtp-mail.outlook.com";
Port = 587;
break;

default:
Port = 25;
break;
}
//确定smtp服务器地址。实例化一个Smtp客户端
OpenNETCF.Net.Mail.SmtpClient client = new OpenNETCF.Net.Mail.SmtpClient(host, Port);


//构造一个发件人地址对象
MailAddress from = new MailAddress(txt_Send.Text);

//构造一个收件人地址对象
MailAddress to = new MailAddress(txt_ToEmail.Text);

//构造一个Email的Message对象
MailMessage message = new MailMessage(from, to);
//设置邮件内容

message.Body = Convert.ToString(emailmessage);
message.BodyEncoding = Encoding.UTF8;


//设置邮件的信息
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = false;

//用户登陆信息
string username = txt_Send.Text;
string passwd = txt_SendPwd.Text;

SmtpCredential myCredentials = new SmtpCredential(username, passwd, domain);
client.Credentials = myCredentials;

client.Send(message);
...全文
353 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_22216365 2018-08-21
  • 打赏
  • 举报
回复
引用 1 楼 wc19840730 的回复:
我曾经也做过类似的东西。一直都没成功过,查代码和返回值都没有问题。

后来查资料说,有些服务器会校验邮件发送服务器的有效性的。我也没搞明白,大致意思是基于有些电子邮箱就是收不到基于个人搭建出的电子邮箱的邮件的。

当时我也没搞明白,也不是一个必须的功能,就搁置了,今天看到了也就随口一说。


可是电脑端的另一个测试邮箱的代码用hotmail邮箱就发邮件成功了啊 同样的smtp和端口 wince里面就发不出去, 是不是wince不支持这个?
qq_22216365 2018-08-21
  • 打赏
  • 举报
回复
引用 2 楼 lich2005 的回复:
会不会被 hotmail 当成垃圾邮件处理了。要么你在你的 hotmail 建一个白名单,在你的程序里面用这个白名单的人作为发件人试试看。
不是收不到邮件 是wince发不出去邮件 不过像163qq 的邮件都能发送 就是hotmail发不了 smtp和端口我都是设置正确的。把这个smtp和端口用到电脑端测试发送邮件中是可以使用的 能发出去邮件
qq_22216365 2018-08-21
  • 打赏
  • 举报
回复
引用 3 楼 qq_25219331 的回复:
启用ssl?试试465端口
我试过了 也不知道怎么回事 部署wince的代码里面就是没有开启/关闭SSL的函数 ,不过测试邮箱的那个代码有这个函数 测试邮箱的代码里面是引用 System.Net.Mail.SmtpClient实例化客户端的,而wince部署的代码里面没有这个空间,引用不了,它是用 OpenNETCF.Net.Mail.SmtpClient实例化客户端的,这里面实例化的客户端中没有开启/关闭SSL的函数 我C#就是个二半吊子 也不懂这是怎么回事....
Vito1993 2018-08-21
  • 打赏
  • 举报
回复
启用ssl?试试465端口
lich2005 2018-08-21
  • 打赏
  • 举报
回复
会不会被 hotmail 当成垃圾邮件处理了。要么你在你的 hotmail 建一个白名单,在你的程序里面用这个白名单的人作为发件人试试看。
wc19840730 2018-08-21
  • 打赏
  • 举报
回复
我曾经也做过类似的东西。一直都没成功过,查代码和返回值都没有问题。

后来查资料说,有些服务器会校验邮件发送服务器的有效性的。我也没搞明白,大致意思是基于有些电子邮箱就是收不到基于个人搭建出的电子邮箱的邮件的。

当时我也没搞明白,也不是一个必须的功能,就搁置了,今天看到了也就随口一说。

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧