标签: mailmessage

如何从我的C#应用​​程序发送电子邮件?

这是我写的代码:

        MailMessage mail = new MailMessage("test@gmail.com", "me@myurl.com");

        mail.Subject = "This is a test!!";
        mail.Body = "testing...";

        SmtpPermission connectAccess = new SmtpPermission(SmtpAccess.Connect);
        System.Console.WriteLine("Access?  " + connectAccess.Access);

        SmtpClient client = new SmtpClient("mail.myurl.com", 2525);
        client.Send(mail);
Run Code Online (Sandbox Code Playgroud)

它不起作用.我在"client.Send(mail)"行显示"邮箱不可用.服务器响应是(MYLOCALCOMPUTERNAME)[我的本地IP]:3045目前不允许中继通过."

connectAccess.Access确实返回"连接"(我不确定这是否必要......我已将其添加进入以启动故障排除过程.)

这是否意味着我的本地机器必须以某种方式配置?当我将我的应用程序部署到其他人机器时呢?那里需要本地配置吗?我只是想从我的应用程序创建一个"发送反馈"类型的链接.

(注意:在我的实际应用程序中,我使用的是"to"和"from"中的真实电子邮件地址,而我的smtp实际上是我托管我的网址/网站的地方的smtp地址)

谢谢!

-Adeena

c# email smtpclient mailmessage

6
推荐指数
2
解决办法
1万
查看次数

正确处理SmtpClient使用的资源

我有一个C#服务,它持续运行用户凭证(即不是本地系统 - 我不能改变这个,虽然我想).在大多数情况下,服务似乎运行正常,但是它经常被轰炸并重新启动,没有明显的原因(服务器管理器设置为在崩溃时重新启动服务).

我在做大量的事件日志,我有一个分层的方法,以异常处理,我认为它可以使至少某种意义:

  • 基本上我得到了顶级泛型异常,null异常和启动异常处理程序.
  • 然后我在" 命令级别 " 获得了各种处理程序(即服务运行的特定操作)
  • 最后,我处理了在类级别处理的一些异常

我一直在看是否有任何资源没有正确发布,我开始怀疑我的邮件代码(发送电子邮件).我注意到我没有为MailMessage对象调用Dispose,现在我已经重写了SendMail代码,如下图所示.

基本问题是:

  • 这段代码会正确释放用于发送邮件的所有资源吗?
  • 我不明白的方式来处理的的SmtpClient对象
  • (对于记录:我没有使用对象初始化器来使样本更容易阅读)
    private static void SendMail(string subject, string html)
    {
        try
        {
            using ( var m = new MailMessage() )
            {
                m.From = new MailAddress("service@company.com");
                m.To.Add("user@company.com");
                m.Priority = MailPriority.Normal;
                m.IsBodyHtml = true;
                m.Subject = subject;
                m.Body = html;
                var smtp = new SmtpClient("mailhost"); …
Run Code Online (Sandbox Code Playgroud)

email send smtpclient mailmessage

6
推荐指数
1
解决办法
6639
查看次数

带有重音符号的MailMessage附件文件名

我正在尝试发送带有附加Excel文件名的HTML电子邮件.这一切都运行良好,直到我发送其附件名称包含重音字母的消息:-(我尝试过的每一种解决方法都失败了.

原始代码:

  var attachment = new Attachment(
       new MemoryStream(excelFileContents),
       "simplefilename.xls");
Run Code Online (Sandbox Code Playgroud)

这个工作正常.但是,如果我用"échec.xls"替换"simplefilename.xls",附件就会被填充(名称和内容).

我试过这些,但无济于事:

  var attachment = new Attachment(
       new MemoryStream(excelFileContents),
       new System.Net.Mime.ContentType("application/vnd.ms-excel"));
  attachment.Name = "échec.xls";
Run Code Online (Sandbox Code Playgroud)

最后一个更糟糕的是:SmtpClient.Send()抛出异常,抱怨é文件名:

  var attachment = new Attachment(
       new MemoryStream(excelFileContents),
       new System.Net.Mime.ContentType("application/vnd.ms-excel"));
  attachment.ContentDisposition.FileName = "échec.xls";
Run Code Online (Sandbox Code Playgroud)

我一直在敲打这个问题太久了.任何灯都热烈欢迎!

.net c# email mailmessage

6
推荐指数
2
解决办法
7260
查看次数

System.Net.Mail和MailMessage不立即发送消息

当我使用System.Net.Mail发送邮件时,似乎邮件不会立即发送.他们在到达我的收件箱之前需要一两分钟.一旦我退出应用程序,所有消息都会在几秒钟内收到.是否有某种邮件消息缓冲区设置可以强制SmtpClient立即发送消息?

public static void SendMessage(string smtpServer, string mailFrom, string mailFromDisplayName, string[] mailTo, string[] mailCc, string subject, string body)
{
    try
    {
        string to = mailTo != null ? string.Join(",", mailTo) : null;
        string cc = mailCc != null ? string.Join(",", mailCc) : null;

        MailMessage mail = new MailMessage();
        SmtpClient client = new SmtpClient(smtpServer);

        mail.From = new MailAddress(mailFrom, mailFromDisplayName);
        mail.To.Add(to);

        if (cc != null)
        {
            mail.CC.Add(cc);
        }

        mail.Subject = subject;
        mail.Body = body.Replace(Environment.NewLine, "<BR>");
        mail.IsBodyHtml = true;

        client.Send(mail);
    }
    catch (Exception …
Run Code Online (Sandbox Code Playgroud)

c# smtp system.net.mail smtpclient mailmessage

6
推荐指数
1
解决办法
7958
查看次数

.NET SmtpClient:有没有办法确保所有电子邮件在发送MailMessage之前解析?

我正在使用SmtpClient向多个收件人发送电子邮件.员工离开公司时,他们的电子邮件地址无效.由于他们的电子邮件地址留在我们的数据库中,直到手动删除,试图发送电子邮件给他们使我们的应用过程中抛出一个异常SmtpClient.Send(MailMessage).但是,尽管抛出异常,它仍会发送电子邮件.这是一个问题,因为我们希望通过阻止用户尝试保存记录并显示友好消息来建议从数据库中删除任何无效的关联来处理此错误.

如果有办法迭代所有配方以确保它们全部有效,我们可以保留所有电子邮件,直到用户满足一系列条件.

.net email-address smtpclient mailmessage resolve

6
推荐指数
1
解决办法
4307
查看次数

在 .net core 中将 MailMessage 转换为 MemoryStream

我正在使用 .Net Core 1.2 和 Amazon SES(SimpleEmail)来发送电子邮件(原始电子邮件)。

以下是我们在 .net framework 4.5 中使用的工作代码版本:

   public MemoryStream ConvertMailMessageToMemoryStream(MailMessage message)
    {
        Assembly assembly = typeof(SmtpClient).Assembly;

        Type mailWriterType = assembly.GetType("System.Net.Mail.MailWriter");

        MemoryStream fileStream = new MemoryStream();

        ConstructorInfo mailWriterContructor = mailWriterType.GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { typeof(Stream) }, null);

        object mailWriter = mailWriterContructor.Invoke(new object[] { fileStream });

        MethodInfo sendMethod = typeof(MailMessage).GetMethod("Send", BindingFlags.Instance | BindingFlags.NonPublic);

        sendMethod.Invoke(message, BindingFlags.Instance | BindingFlags.NonPublic, null, new[] { mailWriter, true, true }, null);

        MethodInfo closeMethod = mailWriter.GetType().GetMethod("Close", BindingFlags.Instance | BindingFlags.NonPublic);

        closeMethod.Invoke(mailWriter, BindingFlags.Instance | BindingFlags.NonPublic, …
Run Code Online (Sandbox Code Playgroud)

mailmessage amazon-ses asp.net-core-1.1

6
推荐指数
1
解决办法
1040
查看次数

具有加密权限的 SMTP 邮件 Outlook

当我在 Outlook 中使用“仅加密”选项发送邮件时 在此输入图像描述

我收到这样的邮件:

在此输入图像描述

目前,我使用 SMTPClient 和 MailMessage 来发送邮件:

MailMessage message = new MailMessage();
message.From = from;
MailAddress to = new MailAddress(destString);
message.To.Add(to);
message.Subject = subject;
smtpClient.Send(message);
Run Code Online (Sandbox Code Playgroud)

如何修改我的代码以发送邮件并按照上面的邮件接收邮件?

经过一番研究,我找到了使用 Interop 的解决方案,但我无法在我的项目中使用它。

var app = new Microsoft.Office.Interop.Outlook.Application();
var item = (Microsoft.Office.Interop.Outlook.MailItem)app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
item.To = abc@gmail.com;
item.Subject = "test";
item.Permission = Microsoft.Office.Interop.Outlook.OlPermission.olDoNotForward;
item.PermissionService = Microsoft.Office.Interop.Outlook.OlPermissionService.olWindows;
item.Send();
Run Code Online (Sandbox Code Playgroud)

c# smtpclient mailmessage

6
推荐指数
1
解决办法
375
查看次数

代码分析抱怨我没有处理对象.这有什么不对?

考虑这段代码

private MailMessage GetMailMessageFromMailItem(Data.SystemX.MailItem mailItem)
        {

            var msg = new MailMessage();

            foreach (var recipient in mailItem.MailRecipients)
            {
                var recipientX = Membership.GetUser(recipient.UserKey);
                if (recipientX == null)
                {
                    continue;
                }

                msg.To.Add(new MailAddress(recipientX.Email, recipientX.UserName));
            }

            msg.From = new MailAddress(ConfigurationManager.AppSettings["EmailSender"],
                                   ConfigurationManager.AppSettings["EmailSenderName"]);

            msg.Subject = sender.UserName;
            if (!string.IsNullOrEmpty(alias)) msg.Subject += "(" + alias + ")";
            msg.Subject += " " + mailItem.Subject;
            msg.Body = mailItem.Body;
            msg.Body += Environment.NewLine + Environment.NewLine + "To reply via Web click link below:" + Environment.NewLine;
            msg.Body += ConfigurationManager.AppSettings["MailPagePath"] + "?AID=" + ContextManager.AccountId …
Run Code Online (Sandbox Code Playgroud)

c# dispose code-analysis mailmessage

5
推荐指数
1
解决办法
608
查看次数

重音字符不显示

我有一个要求,将电子邮件发送给用户,他可以直接回复电子邮件,并且该电子邮件的内容会发布在他的帐户中。

问题是当用户从他的电子邮件中发布内容时,重音字符没有正确显示。我使用MailMessage类发送电子邮件:

message.BodyEncoding = Encoding.UTF8;
message.SubjectEncoding = Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,正文和主题都是 UTF8 编码的。但是,当我从电子邮件中发布消息时,口音会转换为 ?。谁能告诉我我错过了什么?

编辑:这有什么关系IsBodyHtml吗?我还没有设置IsBodyHtml为true。这是必须的吗?

.net c# email mailmessage

5
推荐指数
1
解决办法
1998
查看次数

如何在邮件消息中正确添加 CSS

我正在将一些 HTML 写入 MailMessage.Body,并希望包含一些 CSS 来格式化字体、表格等。我无法正确形成最终的 HTML。

例如:

public static void CreateMessageWithMultipleViews(string server, string recipients)
{
    // Create a message and set up the recipients.
    MailMessage message = new MailMessage("jane@contoso.com","joe@contoso.com");

    // Construct body as HTML. 
    message.Body = @"<html>
        <head>
            <style>
                p{
                    font-family:""Trebuchet MS"", Arial, Helvetica, sans-serif;
                    font-size:0.9em;
                    text-align:left;
                }
            </style>
        </head>
            <body>
                Some body text
            </body>
        </html>");

    // Set this property so that HTML renders
    message.IsBodyHtml = true;

    // Send the message.
    SmtpClient client = new SmtpClient(server);
    client.Credentials = CredentialCache.DefaultNetworkCredentials; …
Run Code Online (Sandbox Code Playgroud)

.net css c# email mailmessage

5
推荐指数
1
解决办法
1万
查看次数