Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中使用无密码的SMTP发送电子邮件#_C#_Email_Smtp - Fatal编程技术网

C# 在C中使用无密码的SMTP发送电子邮件#

C# 在C中使用无密码的SMTP发送电子邮件#,c#,email,smtp,C#,Email,Smtp,我有一个使用ASP.net和C#的web应用程序,它需要一个步骤 从用户到 向带有附件的人发送电子邮件。 我的问题是用户何时会发送我不想发送的电子邮件 每次用户发送时的密码。 我想发送一封没有发件人密码的电子邮件。 使用SMTP有什么方法可以做到这一点吗? 这是我的代码“并非全部”的一个示例。 当我输入密码时,代码工作正常,但如果没有密码,它将被删除 是不工作,我需要一种方式发送电子邮件没有把密码,但 同时使用smtp协议 private void button1_Click(object se

我有一个使用ASP.net和C#的web应用程序,它需要一个步骤 从用户到 向带有附件的人发送电子邮件。 我的问题是用户何时会发送我不想发送的电子邮件 每次用户发送时的密码。 我想发送一封没有发件人密码的电子邮件。 使用SMTP有什么方法可以做到这一点吗? 这是我的代码“并非全部”的一个示例。 当我输入密码时,代码工作正常,但如果没有密码,它将被删除 是不工作,我需要一种方式发送电子邮件没有把密码,但 同时使用smtp协议

private void button1_Click(object sender, EventArgs e)
{
string smtpAddress = "smtp.office365.com";
int portNumber = 587;
bool enableSSL = true;
string emailFrom = "my email";
string password = "******";
string emailTo = "receiver mail";
string subject = "Hello";
string body = "Hello, I'm just writing this to say Hi!";
using (MailMessage mail = new MailMessage())
{
mail.From = new MailAddress(emailFrom);
mail.To.Add(emailTo);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
// Can set to false, if you are sending pure text.
// mail.Attachments.Add(new Attachment("C:\\SomeFile.txt"));
//  mail.Attachments.Add(new Attachment("C:\\SomeZip.zip"));

using (SmtpClient smtp = new SmtpClient(smtpAddress,portNumber))
{
smtp.UseDefaultCredentials = true;
smtp.Credentials = new NetworkCredential(emailFrom, password);
smtp.EnableSsl = enableSSL;               
smtp.Send(mail);
}
MessageBox.Show("message sent");
}
} 

我相信这很容易做到,但有一些限制

看一看这张照片

如果SMTP服务器允许,则电子邮件对象的发件人地址可能不需要与用于连接到SMTP服务器的凭据相同

因此,请将电子邮件对象的发件人地址设置为您的现有地址:

mail.From = new MailAddress(emailFrom);
但是,请使用以下两种方式之一配置smtp连接:

  • 将应用程序设置为在具有访问SMTP服务器权限的帐户下运行
  • 在配置中包括SMTP服务器的凭据
  • 然后,就这样做:

    using (SmtpClient smtp = new SmtpClient())
    {
        smtp.Send(mail);
    }
    
    让配置文件为您处理设置SMTP。这也很好,因为如果您切换服务器,您不需要更改任何代码


    只需记住小心配置文件中的任何敏感设置!(又名,不要将它们签入公共github repo)

    这将需要一个开放式中继,我怀疑出于明显的原因,这种情况是否还会发生。请问,我如何“将您的应用程序设置为在有权访问SMTP服务器的帐户下运行”@南岸