web-dev-qa-db-ja.com

SendGridを使用して添付ファイル付きのメールを送信する

 var myMessage = new SendGridMessage();
            myMessage.From = new MailAddress("[email protected]");
            myMessage.AddTo("Cristian <[email protected]>");
            myMessage.Subject = user.CompanyName + "has selected you!";
            myMessage.Html = "<p>Hello World!</p>";
            myMessage.Text = "Hello World plain text!";

           // myMessage.AddAttachment("C:\test\test.txt");



            var apiKey = "";
            var transportWeb = new Web(apiKey);
            transportWeb.DeliverAsync(myMessage);

基本的に私は電子メールを機能させることができます、そして私が添付ファイルを追加しようとするとそれはそれを送信しません。さまざまなパスとパスの記述方法を試しましたが、何が問題になっているのかわかりません。見つけたチュートリアルはすべて、このように機能するはずです。

9
crystyxn

私はそれを機能させました、私はただ仮想パスが必要だったことがわかりました:

myMessage.AddAttachment(Server.MapPath(@"~\img\logo.png"));
8
crystyxn

\それはエスケープ文字です

//通常の文字列リテラルで初期化します。

myMessage.AddAttachment(@"C:\test\test.txt");

else //逐語的な文字列リテラルで初期化します。

myMessage.AddAttachment("C:\\test\\test.txt");
7

sendgridを使用してblob参照ドキュメントを添付する

mail.AddAttachment(AzureUploadFileClsName.MailAttachmentFromBlob("DocName20190329141433.pdf"));

以下のように作成できる一般的な方法。

public static Attachment MailAttachmentFromBlob(string docpath)
    {
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(storageContainer);
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(docpath);
        blockBlob.FetchAttributes();
        long fileByteLength = blockBlob.Properties.Length;
        byte[] fileContent = new byte[fileByteLength];
        for (int i = 0; i < fileByteLength; i++)
        {
            fileContent[i] = 0x20;
        }
        blockBlob.DownloadToByteArray(fileContent, 0);

        return new Attachment{ Filename = "Attachmentname",
            Content = Convert.ToBase64String(fileContent),
            Type = "application/pdf",
            ContentId = "ContentId" };

    }
3
PradipPatel1411

複数のファイルを追加できます

       var msg = MailHelper.CreateSingleEmail(from, to, subject, null, content);

        byte[] byteData = Encoding.ASCII.GetBytes(File.ReadAllText(filePath));
        msg.Attachments = new List<SendGrid.Helpers.Mail.Attachment>
        {
            new SendGrid.Helpers.Mail.Attachment
            {
                Content = Convert.ToBase64String(byteData),
                Filename = "FILE_NAME.txt",
                Type = "txt/plain",
                Disposition = "attachment"
            }
        };
0
Recep Duman