首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在不打开桌面邮件软件或浏览器的情况下从.Net应用程序发送电子邮件(带附件)?

在不打开桌面邮件软件或浏览器的情况下从.Net应用程序发送电子邮件(带附件)?
EN

Stack Overflow用户
提问于 2012-01-15 10:40:37
回答 5查看 2.8K关注 0票数 2

我正在写一个WPF (C#)应用程序,它接受用户的反馈,并通过电子邮件发送他们。

我希望我的程序在不使用任何桌面邮件软件(Outlook Express或Microsoft Outlook或Windows mail或任何其他软件)的情况下将此邮件发送到固定地址,并且不打开任何浏览器窗口。

事实上,我想不被发现地发送它们。这意味着用户不应该知道如何发送邮件。(这是一个可选要求,可以忽略)。

有人能告诉我怎么做吗?提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-15 15:16:10

您绝对应该尝试使用

代码语言:javascript
运行
复制
using System.Net.Mail;

这是一种你可以用来做这件事的方法:

代码语言:javascript
运行
复制
    /// <summary>
    /// Send an Email
    /// </summary>
    /// <param name="host">Example: smtp.gmail.com</param>
    /// <param name="port">Port to send email</param>
    /// <param name="from">Example: Email@gmail.com</param>
    /// <param name="password">Password</param>
    /// <param name="toList">List of people to send to</param>
    /// <param name="subject">Subject of email</param>
    /// <param name="messsage">Meddage of emial</param>
    /// <param name="deliveryMethod">Deliever type</param>
    /// <param name="isHtml">Is email HTML</param>
    /// <param name="useSSL">Is email SSL</param>
    /// <param name="ccList">List of people to cc</param>
    /// <param name="atachmentList">List of attachment files</param>
    public void SendMessage(string host, int port, string from, string password, List<string> toList, string subject, string messsage,
        SmtpDeliveryMethod deliveryMethod, bool isHtml, bool useSSL, List<string> ccList, List<string> atachmentList)
    {
        try
        {
            SmtpClient smtpClient = new SmtpClient(host);
            smtpClient.DeliveryMethod = deliveryMethod;
            smtpClient.Port = port;
            smtpClient.EnableSsl = useSSL;
            if (!string.IsNullOrEmpty(password))
                smtpClient.Credentials = new NetworkCredential(from, password);

            MailMessage mailMessage = new MailMessage();
            mailMessage.From = new MailAddress(from);
            mailMessage.Subject = subject;
            mailMessage.IsBodyHtml = isHtml;
            mailMessage.Body = messsage;

            if (toList != null)
            {
                for (int i = 0; i < toList.Count; i++)
                {
                    if (!string.IsNullOrEmpty(toList[i]))
                        mailMessage.To.Add(toList[i]);
                }
            }

            if (ccList != null)
            {
                for (int i = 0; i < ccList.Count; i++)
                {
                    if (!string.IsNullOrEmpty(ccList[i]))
                        mailMessage.CC.Add(ccList[i]);
                }
            }

            if (atachmentList != null)
            {
                for (int i = 0; i < atachmentList.Count; i++)
                {
                    if (!string.IsNullOrEmpty(atachmentList[i]))
                        mailMessage.Attachments.Add(new Attachment(atachmentList[i]));
                }
            }

            try
            {
                smtpClient.Send(mailMessage);
            }

            catch
            {
            }
        }
        catch
        {
        }
    }

我只是对所有的东西进行了一次try-catch,并做了最小的错误检查。Hovere,我希望这就是你正在寻找的解决方案。

票数 1
EN

Stack Overflow用户

发布于 2012-01-15 12:35:29

作为框架提供的标准System.Net.Mail.SmtpClient类的替代,您可以使用类似DnSmtp的内容。它允许您的应用程序直接发送电子邮件,而无需配置SMTP服务器(它嵌入了所有SMTP服务器的“魔力”)。如果这确实需要以不可见的方式运行(假设没有用户配置或必须硬编码值),那么这可能是一个值得的选择。

票数 2
EN

Stack Overflow用户

发布于 2012-01-15 10:47:28

您可以使用System.Net.Mail名称空间。

SmtpClient topic in MSDN有一个很好的例子来说明如何做到这一点。

这将要求您在应用程序中嵌入SMTP服务器名称或地址,并且此电子邮件发送很容易被公司或ISP策略阻止(即,一些ISP只允许对其特定SMTP服务器的请求,这在很大程度上是为了阻止或控制垃圾邮件)。

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

https://stackoverflow.com/questions/8867175

复制
相关文章

相似问题

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