我正在写一个WPF (C#)应用程序,它接受用户的反馈,并通过电子邮件发送他们。
我希望我的程序在不使用任何桌面邮件软件(Outlook Express或Microsoft Outlook或Windows mail或任何其他软件)的情况下将此邮件发送到固定地址,并且不打开任何浏览器窗口。
事实上,我想不被发现地发送它们。这意味着用户不应该知道如何发送邮件。(这是一个可选要求,可以忽略)。
有人能告诉我怎么做吗?提前谢谢。
发布于 2012-01-15 15:16:10
您绝对应该尝试使用
using System.Net.Mail;这是一种你可以用来做这件事的方法:
/// <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,我希望这就是你正在寻找的解决方案。
发布于 2012-01-15 12:35:29
作为框架提供的标准System.Net.Mail.SmtpClient类的替代,您可以使用类似DnSmtp的内容。它允许您的应用程序直接发送电子邮件,而无需配置SMTP服务器(它嵌入了所有SMTP服务器的“魔力”)。如果这确实需要以不可见的方式运行(假设没有用户配置或必须硬编码值),那么这可能是一个值得的选择。
发布于 2012-01-15 10:47:28
您可以使用System.Net.Mail名称空间。
SmtpClient topic in MSDN有一个很好的例子来说明如何做到这一点。
这将要求您在应用程序中嵌入SMTP服务器名称或地址,并且此电子邮件发送很容易被公司或ISP策略阻止(即,一些ISP只允许对其特定SMTP服务器的请求,这在很大程度上是为了阻止或控制垃圾邮件)。
https://stackoverflow.com/questions/8867175
复制相似问题