是否可以在 gmail.com 帐户中找到从 C# 以编程方式发送的电子邮件?

Posted

技术标签:

【中文标题】是否可以在 gmail.com 帐户中找到从 C# 以编程方式发送的电子邮件?【英文标题】:Is email message sent from programmatically from C# will be found in gmail.com account? 【发布时间】:2015-12-03 23:11:21 【问题描述】:

我正在使用 gmail 从 C# 程序发送电子邮件,我的问题是如果通过浏览器登录到 gmail.com,在已发送项目下找到的电子邮件? 如果我从 c# 程序发送了一封电子邮件并且该电子邮件失败(退回)然后如果我通过浏览器登录到 gmail.com 是否找到故障转移通知?

如果是,那么是否有任何其他设置可以接收?我想在登录时通过浏览器在 gmail.com 中显示。

【问题讨论】:

你为什么不试试看呢? 唯一可以确定的是,如果您在一个实例中发送过多,gmail 会阻止外部应用程序,然后您必须取消阻止它们 @elasticrash- 我每天只从 c# 程序发送 2 或 3 封电子邮件,仅此而已。我的目标是它也可以通过浏览器从 gmai.com 查看。有什么想法吗? 如果您的问题是“是否从 c# 应用程序发送电子邮件”出现在发送邮件中。那么答案是肯定的 @BenRobinson- 我试过了,但是在地址字段中找不到它,而且我没有 smtp 邮件用户访问权限。所以无法检查,你能帮忙吗? 【参考方案1】:

我不太明白你在问什么,但如果你只需要通过 gmail 发送电子邮件的代码,那就很简单了

 void SendMail_Click(object sender, EventArgs e)
        
            var email = new Dto.IEmail();
            if (EmailBody.Text == string.Empty && EmailSubject.Text == string.Empty)
            
                XtraMessageBox.Show("please fill email body and subject");
                return;
            
            email.Body = EmailBody.Text;
            email.Subject = EmailSubject.Text;
            email.EmailAddress = "email@gmail.com";
            email.ToAddress = "email@gmail.com";

            try
            
                MailMessage message = new MailMessage();
                SmtpClient smtp = new SmtpClient();

                message.From = new MailAddress(email.EmailAddress);
                message.To.Add(new MailAddress(email.ToAddress));
                message.Subject = email.Subject;
                message.Body = email.Body + "\n From user " + GlobalClass.UserLogin.USERNAME + "\n with body: " + _reportedfile;

                smtp.Port = 587;
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new NetworkCredential(email.EmailAddress, "gmailpassword");
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Send(message);
            
            catch (Exception ex)
            
                XtraMessageBox.Show("err: " + ex.Message);
            
        

【讨论】:

我能理解并按照您的建议工作。但我的问题是当我尝试 smtp.Credentials 时,例如 ("xyz@gmail.com","pwd") 和 MailMessage message.From ="abc@gmail.com" 和 TO-"aaa@gmail.com",在此案例电子邮件已成功发送并由预期收件人收到,但是当我登录 gmail.com 时,我无法在“xyz@gmail.com”的已发送项目或“abc@gmail.com”中找到此电子邮件”。那么我在哪里可以在 SENT 项目中找到这封发送电子邮件?在哪个帐户中记录了 SENT 项目? 我用了很多次,发送的邮件确实在发送文件夹中。但是您必须激活 Gmail 才能接受自定义的第 3 方自定义应用程序,否则它可能会完全拒绝该电子邮件。 正确,但电子邮件已成功发送和接收。但只关心 gmail 在哪里记录发送的项目,是在 abc@gmail.com 还是在 xyz@gmail.com?

以上是关于是否可以在 gmail.com 帐户中找到从 C# 以编程方式发送的电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

向 Gmail 帐户发送邮件

无法使用smtp.gmail.com从一个特定的Google帐户发送邮件

如何从企业帐户发送带有烧瓶邮件的电子邮件?

c# SmtpClient 类无法使用 gmail 发送电子邮件

是否可以使用托管标识从 C# 控制台代码连接 Azure 文件共享(存储帐户)

如何使用 GMail 帐户发送电子邮件? [复制]