首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >How to EnableSSL for Health Monitoring Notifications电子邮件?

How to EnableSSL for Health Monitoring Notifications电子邮件?
EN

Stack Overflow用户
提问于 2013-05-31 00:03:02
回答 1查看 171关注 0票数 0

我们正在将电子邮件更改为Office365,当我从.NET发送电子邮件时,它会强制我使用EnableSSL。由于我们的Intranet Web应用程序在.net 3.5下运行,因此看起来我无法使用enable SSL for SmtpClient in Web.config。所以我这样做:

代码语言:javascript
复制
Dim Smtp As New System.Net.Mail.SmtpClient
Smtp.EnableSsl = Boolean.Parse(System.Configuration.ConfigurationManager.AppSettings("SmtpEnableSsl"))
Smtp.Send(eMail)

但是这个ASP.net网站也被配置为Send E-mail for Health Monitoring Notifications。我使用SimpleMailWebEventProvider来执行此操作,但在此提供程序上看起来没有EnableSsl选项。

我该怎么做才能解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-31 02:26:04

我找到了this article,它展示了如何将EnableSsl强制转换为MailWebEventProvider

我对其进行了修改,以便它使用SimpleMailWebEventProvider而不是TemplatedMailWebEventProvider,并使用web.config中的AppSettings来切换EnableSsl设置,而无需更改代码,这样管理员就可以随意切换。

代码语言:javascript
复制
using System;
using System.Collections.Specialized;
using System.Reflection;
using System.Web.Management; 
using System.Net.Mail;
using System.Configuration;

/// <summary>
/// Summary description for SimpleMailWithSslWebEventProvider
/// </summary>
public class SimpleMailWithSslWebEventProvider : WebEventProvider 
{
    private SimpleMailWebEventProvider _SimpleProvider;
    public SimpleMailWithSslWebEventProvider() 
    {
        ConstructorInfo constructor = typeof(SimpleMailWebEventProvider) 
            .GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, 
                            null, new Type[0], null);
        _SimpleProvider = (SimpleMailWebEventProvider)constructor 
            .Invoke(null); 
    } 
    public override void Initialize(string name, NameValueCollection config) 
    { 
        if (config == null) 
        { 
            throw new ArgumentNullException("config"); 
        }
        _SimpleProvider.Initialize(name, config); 

        FieldInfo field = typeof(MailWebEventProvider) 
            .GetField("_smtpClient", 
                      BindingFlags.Instance | BindingFlags.NonPublic);
        field.SetValue(_SimpleProvider, new SmtpClientWithSsl()); 
    } 


    public override void Flush() 
    {
        _SimpleProvider.Flush(); 
    } 
    public override void ProcessEvent(WebBaseEvent raisedEvent) 
    {
        _SimpleProvider.ProcessEvent(raisedEvent); 
    } 
    public override void Shutdown() 
    {
        _SimpleProvider.Shutdown(); 
    } 
}
public class SmtpClientWithSsl : SmtpClient {
    public SmtpClientWithSsl() {
        base.EnableSsl = Boolean.Parse(ConfigurationManager.AppSettings.Get("SmtpEnableSsl"));
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16840875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档