c curl发送html邮件,libcurl

/***************************************************************************

* _ _ ____ _

* Project ___| | | | _ \| |

* / __| | | | |_) | |

* | (__| |_| | _

* \___|\___/|_| \_\_____|

*

* Copyright (C) 1998 - 2020, Daniel Stenberg, , et al.

*

* This software is licensed as described in the file COPYING, which

* you should have received as part of this distribution. The terms

* are also available at https://curl.se/docs/copyright.html.

*

* You may opt to use, copy, modify, merge, publish, distribute and/or sell

* copies of the Software, and permit persons to whom the Software is

* furnished to do so, under the terms of the COPYING file.

*

* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY

* KIND, either express or implied.

*

***************************************************************************/

/*

* SMTP example showing how to send mime e-mails

*

*/

#include

#include

#include

/* This is a simple example showing how to send mime mail using libcurl's SMTP

* capabilities. For an example of using the multi interface please see

* smtp-multi.c.

*

* Note that this example requires libcurl 7.56.0 or above.

*/

#define FROM ""

#define TO ""

#define CC ""

static const char *headers_text[] = {

"Date: Tue, 22 Aug 2017 14:08:43 +0100",

"To: " TO,

"From: " FROM " (Example User)",

"Cc: " CC " (Another example User)",

"Message-ID:

"rfcpedant.example.org>",

"Subject: example sending a MIME-formatted message",

NULL

};

static const char inline_text[] =

"This is the inline text message of the e-mail.\r\n"

"\r\n"

" It could be a lot of lines that would be displayed in an e-mail\r\n"

"viewer that is not able to handle HTML.\r\n";

static const char inline_html[] =

"

\r\n"

"

This is the inline HTML message of the e-mail.

"

"
\r\n"

"

It could be a lot of HTML data that would be displayed by "

"e-mail viewers able to handle HTML.

"

"\r\n";

int main(void)

{

CURL *curl;

CURLcode res = CURLE_OK;

curl = curl_easy_init();

if(curl) {

struct curl_slist *headers = NULL;

struct curl_slist *recipients = NULL;

struct curl_slist *slist = NULL;

curl_mime *mime;

curl_mime *alt;

curl_mimepart *part;

const char **cpp;

/* This is the URL for your mailserver */

curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");

/* Note that this option isn't strictly required, omitting it will result

* in libcurl sending the MAIL FROM command with empty sender data. All

* autoresponses should have an empty reverse-path, and should be directed

* to the address in the reverse-path which triggered them. Otherwise,

* they could cause an endless loop. See RFC 5321 Section 4.5.5 for more

* details.

*/

curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);

/* Add two recipients, in this particular case they correspond to the

* To: and Cc: addressees in the header, but they could be any kind of

* recipient. */

recipients = curl_slist_append(recipients, TO);

recipients = curl_slist_append(recipients, CC);

curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);

/* Build and set the message header list. */

for(cpp = headers_text; *cpp; cpp++)

headers = curl_slist_append(headers, *cpp);

curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

/* Build the mime message. */

mime = curl_mime_init(curl);

/* The inline part is an alternative proposing the html and the text

versions of the e-mail. */

alt = curl_mime_init(curl);

/* HTML message. */

part = curl_mime_addpart(alt);

curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED);

curl_mime_type(part, "text/html");

/* Text message. */

part = curl_mime_addpart(alt);

curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED);

/* Create the inline part. */

part = curl_mime_addpart(mime);

curl_mime_subparts(part, alt);

curl_mime_type(part, "multipart/alternative");

slist = curl_slist_append(NULL, "Content-Disposition: inline");

curl_mime_headers(part, slist, 1);

/* Add the current source program as an attachment. */

part = curl_mime_addpart(mime);

curl_mime_filedata(part, "smtp-mime.c");

curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);

/* Send the message */

res = curl_easy_perform(curl);

/* Check for errors */

if(res != CURLE_OK)

fprintf(stderr, "curl_easy_perform() failed: %s\n",

curl_easy_strerror(res));

/* Free lists. */

curl_slist_free_all(recipients);

curl_slist_free_all(headers);

/* curl won't send the QUIT command until you call cleanup, so you should

* be able to re-use this connection for additional messages (setting

* CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling

* curl_easy_perform() again. It may not be a good idea to keep the

* connection open for a very long time though (more than a few minutes

* may result in the server timing out the connection), and you do want to

* clean up in the end.

*/

curl_easy_cleanup(curl);

/* Free multipart message. */

curl_mime_free(mime);

}

return (int)res;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值