2016-06-03 7 views
2

Ich muss HTML-Tabelle als E-Mail-Körper senden. Ich habe gerade das folgende getan, um Inhaltstyp als HTML zu erwähnen, aber es hat nicht funktioniert.Wie man Briefkörper als HTML in curl einstellt?

headers = curl_slist_append(headers, "Content-Type: text/html"); 
/* pass our list of custom made headers */ 
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); 

Ich konnte kein Beispiel von der Bibliothek Website finden.

Antwort

3

CURLOPT_HTTPHEADER werden auch nicht mit der SMTP-Optionen arbeiten (CURLOPT_MAIL_FROM, CURLOPT_MAIL_RCPT, CURLOPT_MAIL_AUTH). Stattdessen müssen Sie CURLOPT_READFUNCTION verwenden.

/* Disclaimer: untested code */ 
char *msg = "To: [email protected]\r\n" 
      "From: [email protected]\r\n" 
      "Content-Type: text/html; charset=us-ascii\r\n" 
      "Mime-version: 1.0\r\n" 
      "\r\n" 
      "<html><head>\r\n" 
      "<meta http-equiv=\"Content-Type\" content="text/html; charset=us-ascii\">\r\n" 
      "</head><body>\r\n" 
      "<p>Hi Bob</p>\r\n" 
      "</body></html>\r\n" 

size_t callback(char *buffer, size_t size, size_t nitems, void *instream) { 
    /* you actually need to check that buffer <= size * nitems */ 
    strcat(buffer, msg); 
    return strlen(buffer); 
} 

curl_easy_setopt(curl, CURLOPT_READFUNCTION, callback); 
curl_easy_perform(curl); 

The documentation for CURLOPT_READFUNCTION hat weitere Informationen. Wenn Sie bereits reine Text-E-Mails senden, waren Sie schon dabei.

Der einzige wirkliche „Trick“ hier, die nicht in Sending Mail Through Curl von sameerkn verknüpft präsentiert wird, ist, dass Sie die Content-Type Header in der E-Mail-Puffer einfach abladen. Es gibt keine intelligente Header-Einstellung wie bei HTTP.


auch: Ich bin nicht sicher, ob Sie eine Content-Transfer-Encoding Header benötigen, habe ich die charset gesetzt oben auf us-ascii aber Dinge wie utf-8 könnten Transfer-Codierung benötigen.

+0

Danke grochmal, dieser hat wirklich geholfen. –

1

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); wird die HTTP-Protokoll-Header in Ihrer Anfrage festlegen.

Die Kopfzeile, die Sie anzeigen, gilt für E-Mail-Daten (Header-Abschnitt).

E-Mail-Datenformat: (Es verfügt über 2 Sektionen, Kopf- und Körper durch Leerzeile getrennt)

Header: value 
Header: value 
Content-Type: text/html; charset="UTF-8" 
//**********************// << this is a blank line between Header and Body 
Body Of Mail 

Ist Ihre E-Mail nur HTML enthält?

Versuchen folgende Header E-Mail-Headers sowie das Hinzufügen: Content-Transfer-Encoding

Content-Transfer-Encoding: quoted-printable 
Content-Type: text/html; charset="UTF-8" 

quoted-printable ist eine Codierung auf Ihre HTML-Daten durchgeführt. Sie können Daten auch als base64 codieren.

Content-Transfer-Encoding: base64 

** EDIT: Wenn Sie versuchen, E-Mails über curl dann senden Sie bitte verweisen Send Mail Through CURL

+0

Das hat nicht für mich funktioniert. Ich habe versucht headers = curl_slist_append (headers, "Content-Transfer-Encoding: base64;"); headers = curl_slist_append (headers, "Inhaltstyp: text/html; charset = \" UTF-8 \ ";"); /* übergeben Sie unsere Liste der benutzerdefinierten Header */ curl_easy_setopt (curl, CURLOPT_HTTPHEADER, Header); –

+0

Versuchen Sie, E-Mail über CURL zu senden? – sameerkn

+0

Ja, Entschuldigung für die verspätete Antwort. Danke für die Hilfe. Ich habe das selbst gemacht mit Ihrer Header-Option wie oben beschrieben. –

Verwandte Themen