在C#中发送没有密码的邮件

时间:2018-03-22 11:05:49

标签: c# asp.net smtpclient

我正在开发一个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();

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

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。