关于TFS2012无法发送警报邮件的问题
前几天把公司的TFS从2010升级到2012,整个过程经历了3个小时,过程比较顺利。升级完成后眼馋各种新功能,感叹知识真是待到用时方恨少呐,只得一个一个去摸索了。其中有一个“警报”的功能让我印象深刻(其实以前的版本也有,只是经理没给咱们用。现在经理离职了。。。)。“警报”介绍就不多说了,有兴趣的朋友点这里查看官方介绍。
1.首先需要在TFS管理控制台中开启“电子邮件通知”(也可以使用TFSConfig命令行工具配置)。

2.配置警报规则,例如指派给我工作项时触发,或是我的工作项发生更改时触发等等。

经过以上简单配置以后一直收不到通知邮件。翻看系统日志时发现错误消息:
TF53010: Team Foundation 组件或扩展中发生了以下错误: 日期(UTC): 2014/6/7 6:01:45 计算机: TEAMLONG-TFS 应用程序域: TfsJobAgent.exe 程序集: Microsoft.TeamFoundation.Framework.Server, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v4.0.30319 服务主机: 进程详细信息: 进程名称: TFSJobAgent 进程 ID: 2608 线程 ID: 6732 帐户名称: NT AUTHORITY\LOCAL SERVICE
详细消息: TF271001: 尝试将电子邮件通知发送到以下地址时出错: test@ms.com。可能无法记录随后五分钟内发生的更多电子邮件通知错误。请在 Team Foundation 管理控制台中验证电子邮件通知设置是否正确。 异常消息: 操作已超时。 (类型 SmtpException) 异常堆栈跟踪: 在 System.Net.Mail.SmtpClient.Send(MailMessage message) 在 Microsoft.TeamFoundation.JobService.Extensions.Core.NotificationJobExtension.SendEmail(TeamFoundationRequestContext requestContext, TeamFoundationNotification notification, TeamFoundationIdentity subscriber)
提出错误消息中的关键信息:
1.出现异常的函数为System.Net.Mail.SmtpClient.Send(MailMessage message)。
2.异常为操作已超时。
为了便于调试,在本地创建一个简单的控制台程序。
class Program
{
static void Main(string[] args)
{
SmtpClient client = new SmtpClient();
client.Port = 465;
client.Host = "smtp.exmail.qq.com";
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("test@ms.com", "1234567890");
MailMessage mm = new MailMessage("test@ms.com", "user1@ms.com", "test", "test");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
client.Send(mm);
}
}
问题出现在TFS使用的是System.Net.Mail下的SmtpClient来发送邮件,而System.Net.Mail only仅支持Explicit SSL。这样一来就好办了,不使用SSL就行了嘛,修改测试源码,测试通过。
class Program
{
static void Main(string[] args)
{
SmtpClient client = new SmtpClient();
client.Host = "smtp.exmail.qq.com";
client.Port = 25;
client.Port = 465;
client.EnableSsl = true;
client.Timeout = 10000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("test@ms.com", "1234567890");
MailMessage mm = new MailMessage("test@ms.com", "user1@ms.com", "test", "test");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
client.Send(mm);
}
}
最后在配置TFS邮件通知设置的时候端口改用25,不选择SSL,顺利解决问题。
SmtpClient发送邮件超时的异常参考:
关于TFS2012无法发送警报邮件的问题的更多相关文章
- SQL Server Alert发送告警邮件少了的原因
最近突然发现我们部署在数据库上面的告警(Alert),当错误日志里面出现错误时,并不是每个错误日志都会发送邮件出来.如下所示,设置了告警"SQL Server Severity Event ...
- CI框架使用PHPmail插件发送QQ邮件:
有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...
- 如何利用sendmail发送外部邮件?
在写监控脚本时,为了更好的监控服务器性能,如磁盘空间.系统负载等,有必要在系统出现瓶颈时,及时向管理员进行报告.在这里通常采用邮件报警,同时,邮件设置为收到邮件,即向指定手机号码发送短信.这样可以实现 ...
- outlook 2016 for windows 每次刷新发送接收邮件会弹出登陆界面
Q: outlook2016 for windows 每次刷新发送接收邮件会弹出登陆界面,office365 ProPlus 都是正常激活了,Word 和Excel都不存在此类问题 A: 排除用户的o ...
- 使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误
使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误 这个错误是验证出现错误, $mail->Port = 25; //SMT ...
- 关于NK3C使用富文本编辑器(CKEditor)发送HTML邮件的使用说明
目前NK3C发送HTML邮件使用的的编辑器是CKEditor4.6版本,关于CKEditor的使用说明如下: 1.依赖JQuery1.7版本以上,在xxx.vm中<head>< ...
- .Net Mail SMTP 发送网络邮件
刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...
- 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
一.邮件发送 1.邮件发送使用SMTP协议或者IMAP协议,这里使用SMTP协议演示. SMTP协议使用的端口号:25 rfc821详细记载了该协议的相关信息 (1)使用telnet发送邮件(使用12 ...
- WordPress用户注册无法发送密码邮件怎么回事?
wordpress无法发送电子邮件.可能原因:您的主机禁用了 mail() 函数 等等几句话.在网上一搜,很快找到了解决方案:使用wp-mail-smtp插件. 一.插件下载安装.可以在wordpre ...
随机推荐
- 解密-神秘的 RunLoop
引言 一直以来RunLoop就是个神秘的领域,好多2.3年的开发者都不能准确的表述它的作用,说它神秘,其实RunLoop并没有大家想象中的那么神秘,那么不好理解,本文就带大家好好剖析一下”神秘的Run ...
- .ignore插件自动忽略
AS自带的.ignore文件 在AS中新建项目时,默认会创建一个.ignore文件,其中默认忽略的是 *.iml .gradle /local.properties /.idea/workspace. ...
- OJ常见问题及必须认识的对拍处理水题
HDUOJ: 常见问题及解答 Q: Online Judge(以下简称OJ)支持哪些语言? A: 目前为止,HDOJ支持C.C++.Pascal和Java四种语言. Q: 有什么条件判断我的程序是在O ...
- LINQ to SQL 基础
取得数据库Gateway 要操作数据库,我们首先要获得一个DataContext对象,这个对象相当于一个数据 库的Gateway,所有的操作都是通过它进行的.这个对象的名字是“Linq to SQL ...
- [转帖]AVS音视频编解码技术了解
AVS高清立体视频编码器 电视技术在经历了从黑白到彩色.从模拟到数字的技术变革之后正在酝酿另一场技术革命,从单纯观看二维场景的平面电视跨越到展现三维场景的立体电视3DTV.3DTV系统的核心问题之一是 ...
- 关于线程池ThreadPool的学习
学习重点ThreadPool.SetMinThreads(out workerThreads, out completionPortThreads).这是整个线程池的关键. 而ThreadPool. ...
- poi大数据将excel2007导入数据库
package com.jeeframe.cms.updata.service.impl; import java.io.IOException; import java.io.InputStream ...
- PHP获取函数返回值的引用
通过在函数前添加&可以获取函数返回值的引用,如:function &test(){return 10;}
- JavaScript-学习一加载不动
为先加载的js后加载的html 加载完js运行时因为未加载html的原因导致找不到js所控制的元素 所以解决的方法就是把js放到控制元素的下方 或者html的底部 做成函数的时候可以放在头部,也就是说 ...
- PHP开发套件
Windows系统下开发 环境配置: PHPstudy----立即下载 开发工具: PHPstorm----立即下载 引用一个注册服务器地址:潘田--phpstorm 2016.1注册码 当然推荐大家 ...