在 C sharp 的邮件中使用 url 添加附件

Adding attachments using url in mail with C sharp

我可以发送带有 URLs 的附件,但是,寻求支持来发送带有附件的文件。那也应该从 url 下载并附在邮件中。

MailMessage mail = new MailMessage();
mail.From = new MailAddress("mymail@email.com");

//to mail address
mail.To.Add(txtEmail.Text);

//Add the Attachment
mail.Attachments.Add(data);

//set the content 
mail.Subject = txtSubject.Text;
mail.Body = "Kindly find the below attachments with the link, https://www.python.org/static/img/python-logo@2x.png";

//send the message 
SmtpClient smtp = new SmtpClient("*****.********.net");

NetworkCredential Credentials = new NetworkCredential("mymail@email.com", "********");
smtp.Credentials = Credentials;
smtp.Send(mail);

这里我发送邮件 URL 作为一个文件, 但我想附加一个文件而不是发送 link

示例 URL 已添加为图像 link.. 但我想添加 pdf link.. 在这种情况下,我想下载一个文件并用邮件附加它,

我主要在我的所有项目中使用它,它运行良好。它以 64 为基数

首先,确保您的 Gmail 帐户已启用发送电子邮件功能。

    public static async Task SendEmail(string toUser, string subject, string body
        , string username, string password, string port, string smtpServer, string ccUsers = "", string base64Url = "")
    {
        var toAddress = new System.Net.Mail.MailAddress(toUser, toUser);


        System.Net.Mail.MailMessage emessage = new System.Net.Mail.MailMessage();

        emessage.To.Add(toAddress);

        if (!string.IsNullOrEmpty(ccUsers))
        {
            string[] ccIds = ccUsers.Split(',');
            foreach (string item in ccIds)
            {
                emessage.CC.Add(new System.Net.Mail.MailAddress(item));
            }
        }

        emessage.Subject = subject;
        emessage.From = new System.Net.Mail.MailAddress(username);
        emessage.Body = body;
        emessage.IsBodyHtml = true;
        System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();

        if (!string.IsNullOrEmpty(base64Url))
        {
            base64Url = base64Url.Replace("data:image/jpeg;base64,", "");
            var imageBytes = Convert.FromBase64String(base64Url);
            var stream = new MemoryStream(imageBytes);
            System.Net.Mime.ContentType ct = new System.Net.Mime.ContentType(System.Net.Mime.MediaTypeNames.Image.Jpeg);
            System.Net.Mail.Attachment at = new System.Net.Mail.Attachment(stream, ct);
            at.ContentDisposition.FileName = "Invoice.jpeg";
            emessage.Attachments.Add(at);
        }


        var netCredential = new System.Net.NetworkCredential(username, password);
        sc.Host = smtpServer;
        sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
        sc.UseDefaultCredentials = false;
        sc.Credentials = netCredential;
        sc.EnableSsl = true;
        sc.Port = Convert.ToInt32(port);
        await sc.SendMailAsync(emessage);

    }

它工作正常,邮件直接到达收件箱而不是垃圾邮件。也可以从服务器路径附加文件。谢谢大家愿意回答我的问题..

    {
        try
        {

            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("mymail@gmail.com");
            mail.To.Add("tomail@gmail.com");
            
            //set the content 
            string filename = "Report1";

            string fileurl = Server.MapPath("..");
            fileurl = fileurl + @"\mailserver\pdf\generated\" + filename + ".pdf";


            //mail.Attachments.Add(new Attachment(fileurl));
            
            if (!string.IsNullOrEmpty(fileurl))
            {
                Attachment attachment = new Attachment(fileurl, MediaTypeNames.Application.Pdf);
                ContentDisposition disposition = attachment.ContentDisposition;
                disposition.CreationDate = File.GetCreationTime(fileurl);
                disposition.ModificationDate = File.GetLastWriteTime(fileurl);
                disposition.ReadDate = File.GetLastAccessTime(fileurl);
                disposition.FileName = Path.GetFileName(fileurl);
                disposition.Size = new FileInfo(fileurl).Length;
                disposition.DispositionType = DispositionTypeNames.Attachment;
                mail.Attachments.Add(attachment);
            }

            mail.Subject = "Subject Text";
            mail.Body = "Body Text";

            //send the message 
            SmtpClient smtp = new SmtpClient("smtpout.****.******server.net");

            NetworkCredential Credentials = new NetworkCredential("mymail@gmail.com", "Password@123");
            smtp.Credentials = Credentials;
            
            //smtp.EnableSsl = true;
            smtp.Send(mail);
            
            Response.Write("<center><span style='color:green'><b>Mail has been send successfully!</b></span></center>");
        }
        catch (Exception ex)
        {
            //Response.Write("<center><span style='color:red'><b>"+ ex + "</b></span></center>");

            Response.Write("<center><span style='color:red'><b>Failed to send a mail...Please check your mail id or Attachment missing</b></span></center>");
        }
    }