SendGrid Attachments Are Empty or Corrupt Using API (VBA)

前端 未结 3 498
日久生厌
日久生厌 2021-01-21 13:44

This seems to be a constant issue with the SendGrid Web API and emailing attachments. I\'ve found many, many posts across the web all of whom are having this same issue... but n

3条回答
  •  遥遥无期
    2021-01-21 14:18

    Please see my "Here it is!" answer. I'm leaving this answer here for historical reasons only.

    Try with something like this:

    ' Set the Server URL to the form input
    HttpReqURL = "https://api.sendgrid.com/api/mail.send.json"
    
    boundary = "----------------------------123456789abc"
    
    Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
    xmlhttp.Open "POST", HttpReqURL, False
    xmlhttp.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + boundary 
    
    dataToSend = "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""api_user""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + YOUR_API_USER + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf    
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""api_key""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + YOUR_API_KEY + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf            
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""to""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + eTo + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""toname""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + eToName + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""subject""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + eSubject + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""text""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + eBody + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""from""" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + eFrom + vbCrLf
    
    dataToSend = dataToSend + "--" + boundary + vbCrLf
    dataToSend = dataToSend + "Content-Disposition: form-data; name=""files[1]""; filename=""myPDF.pdf""" + vbCrLf
    
    dataToSend = dataToSend + vbCrLf
    dataToSend = dataToSend + "Content-Type: application/octet-stream" + vbCrLf
    dataToSend = dataToSend + vbCrLf
    
    dataToSend = dataToSend + BASE64ENCODEDFILE + vbCrLf
    dataToSend = dataToSend + "--" + boundary + "--" + vbCrLf
    
    xmlhttp.send dataToSend
    

提交回复
热议问题