http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 24613|回复: 9
打印 上一主题 下一主题

[综合] 使用.NET的SMTP不能发送邮件,邮箱是支持SMTP的

[复制链接]
跳转到指定楼层
楼主
发表于 2013-8-26 16:15:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
今天使用SMTP发邮件的时候,碰到个邮箱发不了邮件的
zoho.com提供的免费企业邮箱,试了用FOXMAIL是可以发出去的。
[C#] 纯文本查看 复制代码
/// <summary>
        /// 邮件发送
        /// </summary>
        /// <param name="from">发件人邮箱</param>
        /// <param name="pwd">邮件密码</param>
        /// <param name="to">收件人邮箱</param>
        /// <param name="toname">收件人名字</param>
        /// <param name="title">邮件主题</param>
        /// <param name="body">邮件内容</param>
        /// <param name="smtp">SMTP</param>
        /// <param name="port">SMTP PORT</param>
        /// <param name="ssl">SSL</param>
        /// <param name="nickname">发件人名字</param>
        /// <returns></returns>
        public bool sendMail(string from, string pwd, string to, string toname, string title, string body, string smtp, int port, bool ssl, string nickname)
        {
            try
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress(from, nickname, Encoding.UTF8);
                mail.To.Add(new MailAddress(to.Trim(), toname.Trim(), Encoding.UTF8));
                mail.Subject = title;
                mail.SubjectEncoding = Encoding.UTF8;
                mail.IsBodyHtml = true;
                mail.Priority = MailPriority.Normal;
                mail.Body = body;
                mail.BodyEncoding = Encoding.UTF8;

                SmtpClient client = new SmtpClient();
                client.Host = smtp;
                client.Port = port;
                client.EnableSsl = ssl;
                client.Timeout = 60000;
                client.UseDefaultCredentials = false;
                //client.UseDefaultCredentials = true;
                client.Credentials = new NetworkCredential(from.Split('@')[0], pwd);
                //client.Credentials = CredentialCache.DefaultNetworkCredentials;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;

                try
                {
                    client.Send(mail);
                    return true;
                }
                catch (SmtpException ex)
                {
                    return false;
                }
                catch (Exception ex)
                {
                    return false;
                }
                finally
                {
                    mail.Dispose();
                    client = null;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

发送邮件:里面的账号及密码是正确的,可以直接使用。
[C#] 纯文本查看 复制代码
sendMail("one@yswfpt.com", "azsxdcfvgb", "hyit118@yeah.net", "hy", "subject", "body", "smtp.zoho.com", 465, true, "s1");


官方的POP及SMTP说明:
Incoming Server Settings:
Incoming Server Name: pop.zoho.com
Port: 995
Require SSL: Yes
Outgoing Server Settings:
Outgoing Server Name: smtp.zoho.com
Port: 465
Require SSL: Yes
Require Authentication: Yes

现在就是发送不了,也不提示错误,提示的是超时。

FOXMAIL的设置如下(可以收发):

不知道哪个地方搞错了。代码发其它的邮箱是可以发送的。
哪位帮忙看下,谢谢了。
[attach]VS2010源文件[/attach]

WindowsFormsApplication3.rar

39.89 KB, 下载次数: 235, 下载积分: 金钱 -1



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
发表于 2013-8-26 16:37:15 | 只看该作者
这是安全连接ssl的问题,你要么取消,要么在C#里也使用安全连接
板凳
 楼主| 发表于 2013-8-26 16:41:27 | 只看该作者

[code=csharp]client.EnableSsl = ssl;[/code]
这个不行么?
要怎么设置?
地板
 楼主| 发表于 2013-8-26 16:45:16 | 只看该作者
不会一定要用SOCKET SSLSTREAM吧。。。。
5
发表于 2013-8-26 16:45:33 | 只看该作者
有提示吗?
或者报有什么错误吗?
6
 楼主| 发表于 2013-8-26 16:54:22 | 只看该作者
错误提示是:连接超时

7
发表于 2013-8-26 16:57:09 | 只看该作者
http://www.sufeinet.com/forum.ph ... hlight=%D3%CA%BC%FE
要不你看看这个文章里面的方法,有两种上面是一个,下面是一个,看看这个能不能发送。也可能是实现方式 的问题
8
发表于 2013-8-27 09:24:24 | 只看该作者
你那个6000是毫秒吧
超时多正常吧
我这写的有邮件发送的类,要源码不?
9
 楼主| 发表于 2013-8-28 14:54:06 | 只看该作者
‘陌玍卋界。 发表于 2013-8-27 09:24
你那个6000是毫秒吧
超时多正常吧
我这写的有邮件发送的类,要源码不?

我好像试过+3倍时间的。

麻烦发来看下,谢谢。。



10
发表于 2013-8-28 14:58:11 | 只看该作者
本帖最后由 ‘陌玍卋界。 于 2013-8-28 15:06 编辑
inghot 发表于 2013-8-28 14:54
我好像试过+3倍时间的。

麻烦发来看下,谢谢。。

     /// <summary>
        /// 处审核后类的实例
        /// </summary>
        /// <param name="To">收件人地址集合</param> 根据个人需要是单个收件人或者多个
        /// <param name="Body">邮件正文</param>
        /// <param name="Title">邮件的主题</param>
        public SendMail(List<string> To, string Body, string Title)
        {
            mailMessage = new MailMessage();
            foreach (string str in To)
            {
                mailMessage.To.Add(str);
            }
            List<sendmailinfoModel> list = new List<sendmailinfoModel>();
            sendmailinfoProc sendMailinfoProc = new sendmailinfoProc();
            list = sendMailinfoProc.GetList(null);
            sendmailinfoModel sendinfo = list[0] as sendmailinfoModel;
            if (sendinfo != null)
            {
                mailMessage.From = new System.Net.Mail.MailAddress(sendinfo.Mailaddress, sendinfo.Mailname);
                //mailMessage.From = new System.Net.Mail.MailAddress("aaa@163.com");
                mailMessage.Subject = Title;
                mailMessage.Body = Body;
                mailMessage.IsBodyHtml = false;
                mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                mailMessage.Priority = System.Net.Mail.MailPriority.Normal;
                this.password = sendinfo.Mailpassword;
                //this.password = "***";
                smtpserver = sendinfo.Smtpserver;
            }
        }

/// <summary>
        /// 发送邮件
        /// </summary>
        public SmtpStatusCode Send()
        {
            if (mailMessage != null)
            {
                smtpClient = new SmtpClient();
                smtpClient.Credentials = new System.Net.NetworkCredential(mailMessage.From.Address, password);//设置发件人身份的票据
                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpClient.Host = smtpserver;
                try
                {
                    smtpClient.Send(mailMessage);
                }
                catch (SmtpException e)
                {
                    return e.StatusCode;
                }
                return SmtpStatusCode.Ok;
            }
            return SmtpStatusCode.SyntaxError;
        }
有问题再问我
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-18 19:06

© 2014-2021

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