【问题标题】:Send Mail without password in C#在 C# 中发送没有密码的邮件
【发布时间】:2018-03-22 19:19:19
【问题描述】:

我正在开发一个 Asp.net 应用程序。我有一个电子邮件提醒表单,其中提供了我的客户的电子邮件 ID 和复选框。管理员将选中复选框并按下 发送提醒 按钮,邮件将发送到所有选中的复选框,即发送给我的客户。但在此表单中,我有一个文本框说 发件人 管理员将在其中放置发件人电子邮件 ID,并且所有电子邮件都将从该电子邮件 ID 发送给我的客户。

我如何在没有密码的情况下发送邮件,因为管理员可以根据他的要求使用我们公司电子邮件 ID 中的任何电子邮件 ID。我怎样才能做到这一点

这是我的代码

SmtpClient smtpClient = new SmtpClient
                {
                    Host = "smtp.office365.com",
                    Port = 25,
                    UseDefaultCredentials = true,
                    EnableSsl = true,
                    Credentials = new NetworkCredential("Adminsupport@abc.com", "123456")
                };
                var mailMessage = new MailMessage();
                mailMessage.Subject = subject;
                mailMessage.From = new MailAddress("Adminsupport@abc.com");
                mailMessage.IsBodyHtml = true;
                mailMessage.Body = body;
                    //"Email from : <a href='mailto:" + from + "' target='_blank'>" + from + "</a><br/>For Form Name : ";
                mailMessage.To.Add(new MailAddress(tomail));

                smtpClient.Send(mailMessage);

                mailMessage.Dispose();
                smtpClient.Dispose();

【问题讨论】:

  • 如果您的电子邮件服务器需要密码来进行身份验证,您无法绕过它。如果您的帐户无权“发送为”,则它不太可能起作用。

标签: c# asp.net smtpclient


【解决方案1】:

创建一个新用户,仅用于从您的 Web 应用程序发送邮件,并在您的应用程序中配置其凭据。

然后配置该用户,以便它可以代表您希望发送电子邮件的用户或组发送。

您可以使用 SMTP 客户端提交或 SMTP 中继,请参阅How to set up a multifunction device or application to send email using Office 365

【讨论】:

  • 目前我们使用“创建一个新用户,其唯一目的是从您的 Web 应用程序发送邮件,并在您的应用程序中配置其凭据。”
  • 但是我怎样才能实现这个“然后配置该用户,以便它可以代表您希望让电子邮件来自的用户或组发送。”
【解决方案2】:

好的,听起来你想要两件事之一。

您要么想要欺骗电子邮件地址,在这种情况下,您实际上将更改 From 标头字段。这将向收件人显示您想要的电子邮件地址和姓名。

mail.From = new MailAddress("me@mycompany.com", "Steve James" );

另一个可能的答案是,您实际上希望使用自己的登录凭据发送电子邮件,但要“从”您具有交换权限的帐户发送电子邮件。 (这是一个 MS Outlook / Exchange 特定的答案) - 您需要通过 MS Outlook 互操作 API 发送

 // Retrieve the account that has the specific SMTP address. 
        Outlook.Account account = GetAccountForEmailAddress(oApp , "support@mydomain.com"); 
        // Use this account to send the e-mail. 
        oMsg.SendUsingAccount = account; 

这将确保只有具有适当权限以“从”地址发送的人才能这样做 - 因为它将身份验证级别检查卸载到 MS Outlook。

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 2017-08-08
    • 2017-02-15
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    相关资源
    最近更新 更多