51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3513|回复: 6
打印 上一主题 下一主题

[原创] 来求助个关于C#发送email的函数,请求路过的大侠相助

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-12-4 15:47:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想把很多函数封装成C#的dll搭建QTP框架,但是有一个函数好几天了一直没有写成功,不报任何错,也不抛exception,但是就是收不到邮件
恳请路过的大侠出手相助,晚辈谢过了

using System.Net.Mail;
using System.Net;
using System.IO;


public string SendEmail(string toAddr, string title, string content)
        {
            MailMessage msg = new MailMessage();
            msg.To.Add(toAddr);
            msg.To.Add("quicktest@yahoo.cn");
            msg.CC.Add("wally.yu@mercer.com");
            msg.From = new MailAddress("MercerAutomation@gmail.com", "Automation Mercer", System.Text.Encoding.UTF8);
            msg.Subject = title;
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = content;
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = false;
            msg.Priority = MailPriority.Normal;
            SmtpClient client = new SmtpClient();
            client.Credentials = new NetworkCredential("MercerAutomation@gmail.com", "EssMercer");
            client.Port = 587; //587, 465, 995
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
            object userState = msg;
            try
            {
                client.SendAsync(msg, userState);
                return "sucess";
            }
            catch (SmtpException ex)
            {
                return ex.Message + "SendEmail error";
            }
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-12-4 23:59:46 | 只看该作者
client.Port = 587; //587, 465, 995
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
            object userState = msg;
            try
            {
                client.SendAsync(msg, userState);
                return "sucess";
            }

改为:

client.Port = 25; //587, 465, 995
            client.Host = "smtp.gmail.com";
            //client.EnableSsl = true;
            //object userState = msg;
            try
            {
                client.Send(msg);
                return "sucess";
            }
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-12-5 00:03:18 | 只看该作者
我用的是163测试的,如果gmail发生不成功,请把端口改为465或587
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-12-5 08:53:27 | 只看该作者
呵呵,这些端口都试过了,今天用了发送回调收到下面的信息:
System.Net.Mail.MailMessageSystem.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 74.125.79.109:587
   at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpConnection.ConnectAndHandshakeAsyncResult.End(IAsyncResult result)
   at System.Net.Mail.SmtpClient.ConnectCallback(IAsyncResult result)
   --- End of inner exception stack trace ---

不清楚是哪里出了错
楼上的英雄介意把你的163的代码贡献出来吗?我163也有帐号
你也可以发到我邮箱探讨:wally.yu@mercer.com
多谢了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-12-5 23:59:04 | 只看该作者
看信息,应该是邮件不服务器不支持smtp。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-12-6 00:08:51 | 只看该作者
我基本没改什么:如下是163的,经过测试的。
public string SendEmail(string toAddr, string title, string content)
        {
            MailMessage msg = new MailMessage();
            msg.To.Add(toAddr);
            msg.To.Add("XXXXX@163.com");
            msg.CC.Add("XXXXX@163.com");
            msg.From = new MailAddress("XXXXX@163.com", "Automation Mercer", System.Text.Encoding.UTF8);
            msg.Subject = title;
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = content;
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = false;
            msg.Priority = MailPriority.Normal;
            SmtpClient client = new SmtpClient();
            client.Credentials = new NetworkCredential("XXXXX@163.com", "密码");
            client.Port = 25; //587, 465, 995
            client.Host = "smtp.163.com";
            //client.EnableSsl = true;
            //object userState = msg;
            try
            {
                client.Send(msg);
                return "sucess";
            }
            catch (SmtpException ex)
            {
                return ex.Message + "SendEmail error";
            }
}
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-12-8 09:47:14 | 只看该作者
呵呵,谢谢了
经测试,我的那个函数也是可以发送的,呵呵,只是公司把端口封掉了
谢谢ZERONG.HE兄
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 19:56 , Processed in 0.064932 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表