2017-01-10 2 views
1

Gmail API를 사용하여 PHP에서 HTML 임베디드 이메일을 보내는 데 문제가 있습니다. 내가받을Gmail API를 사용하여 PHP에서 이메일 보내기

$raw_message .= "To:".$email['name']." <".$email['email'].">\r\n"; 
$raw_message .= 'Subject: =?utf-8?B?' .base64_encode($email_array['subject']) . "?=\r\n"; 

// Set the right MIME & Content type 
$raw_message .= "MIME-Version: 1.0\r\n"; 
$raw_message .= "Content-Type: text/html; charset=utf-8\r\n"; 
$raw_message .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n"; 

$mime = rtrim(strtr(base64_encode($raw_message), '+/', '-_'), '='); 
$message = new Google_Service_Gmail_Message(); 
$message->setRaw($mime); 

$template = $this->load->view('email/default_email_template', $email_template_array, true); 
$raw_message .= $template; 

$mime = rtrim(strtr(base64_encode($raw_message), '+/', '-_'), '='); 
$message = new Google_Service_Gmail_Message(); 
$message->setRaw($mime); 

$response = $service->users_messages->send($user, $message); 

이메일 그냥 일반 텍스트 :

여기에 코드입니다.

여기에서 도움을 얻을 수 있습니다.

미리 감사드립니다.

편집 : 여기 내 템플릿

<body style="height: 100% !important; margin: 0 !important; padding: 0 !important; width: 100% !important;margin: 0 !important; padding: 0 !important;"> 

<!-- HEADER --> 
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse !important;"> 
<tr> 
<td bgcolor="#fff" align="center"> 
<!--[if (gte mso 9)|(IE)]> 
<table align="center" border="0" cellspacing="0" cellpadding="0" width="500"> 
<tr> 
     <td align="center" valign="top" width="500"> 
     <![endif]--> 
     <table border="0" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse !important;max-width: 500px;width: 100% !important; max-width: 100% !important;"> 
      <tr> 
       <td align="center" valign="top" style="padding: 15px 0;margin: 0 auto !important;" class="logo"> 
        <a href="https://www.example.com" target="_blank"> 
         <img alt="Logo" src="https://example.com/home/images/logo.png" width="90" height="90" style="border: 0; height: auto; line-height: 100%; outline: none; text-decoration: none; display: block; font-family: Helvetica, Arial, sans-serif; color: #ffffff; font-size: 16px;" border="0"> 
        </a> 
        <span style="font-size: 40px; color: #000000;">mad</span><span style="font-size: 40px; color: #e18a07;">gigs</span> 
       </td> 
      </tr> 
     </table> 
     <!--[if (gte mso 9)|(IE)]> 
     </td> 
     </tr> 
     </table> 
     <![endif]--> 
    </td> 
</tr> 
<tr> 
    <td bgcolor="#ffffff" align="center" style="padding: 0px 15px 20px 15px;padding: 50px 15px 50px 15px !important;" class="section-padding"> 
     <table border="0" cellpadding="0" cellspacing="0" width="500" class="responsive-table" style="border-collapse: collapse !important;width: 100% !important;"> 
      <tr> 
       <td> 
        <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse !important;"> 
         <tr> 
          <td> 
           <!-- COPY --> 
           <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse !important;"> 
            <tr> 
             <td align="center" style="font-size: 25px; font-family: Helvetica, Arial, sans-serif; color: #333333; padding-top: 30px;padding: 10px 5% 10px 5% !important;text-align: center" class="padding-copy">HI THERE</td> 
            </tr> 
            <tr> 
             <td align="center" style="padding: 20px 0 0 0; font-size: 16px; line-height: 25px; font-family: Helvetica, Arial, sans-serif; color: #666666;padding: 10px 5% 10px 5% !important;text-align: center;" class="padding-copy">BODY OF THE EMAIL</td> 
            </tr> 
           </table> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
    </td> 
</tr> 
<tr> 
    <td bgcolor="#ffffff" align="center" style="padding: 20px 0px;"> 
     <!--[if (gte mso 9)|(IE)]> 
     <table align="center" border="0" cellspacing="0" cellpadding="0" width="500"> 
     <tr> 
     <td align="center" valign="top" width="500"> 
     <![endif]--> 
     <!-- UNSUBSCRIBE COPY --> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center" style="border-collapse: collapse !important; max-width: 500px;width: 100% !important;" class="responsive-table"> 
      <tr> 
      </tr> 
     </table> 
     <!--[if (gte mso 9)|(IE)]> 
     </td> 
     </tr> 
     </table> 
     <![endif]--> 
    </td> 
</tr> 
<tr> 
    <td bgcolor="#DFE4E6" align="center" style="padding: 20px 0px;"> 
     <!--[if (gte mso 9)|(IE)]> 
     <table align="center" border="0" cellspacing="0" cellpadding="0" width="500"> 
     <tr> 
     <td align="center" valign="top" width="500"> 
     <![endif]--> 
     <!-- UNSUBSCRIBE COPY --> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center" style="border-collapse: collapse !important;max-width: 500px;width: 100% !important;" class="responsive-table"> 
      <tr> 
       <td align="center" style="font-size: 12px; line-height: 18px; color:#666666;"> 

       </td> 
      </tr> 
     </table> 
     <!--[if (gte mso 9)|(IE)]> 
     </td> 
     </tr> 
     </table> 
     <![endif]--> 
    </td> 
</tr> 

+0

이메일/default_email_template 코드를 공유하십시오. CSS 클래스를 사용하고 있습니까? – Ruby

+0

안녕하세요, 전체 인증/발신 프로세스의 소스 코드에 관심이 있습니다. 어떻게 든 이야기 할 수 있을까요? –

답변

0
당신은 PHP를 사용하여 메시지를 보내는 방법에 대한이 tutorial을 확인하기 위해 시도 할 수

입니다. 전자 메일 본문에 HTML 컨텐트를 보내는 방법은 여기에서 배우게됩니다. 여러 가지 방법으로이 작업을 수행 할 수 있습니다.

이 두 가지가 일반적으로 사용됩니다

  1. 붙박이 '메일() PHP의 기능을 사용.
  2. 'PHPMailer'라이브러리 사용.

자습서를 통해 필요한 단계와 가이드로 사용되는 샘플 코드를 확인하십시오.

자세한 내용은

확인이 스레드 :

+0

답장을 보내 주셔서 감사합니다. 그러나 제가 언급 한 것처럼, 귀하의 Gmail 계정에서 이메일을 보내도록 내 웹 앱을 인증하도록 사용자를 인증합니다. 그래서 내가 보낼 수있는 유일한 방법은 구글 라이브러리의 "보내기"기능 (내가 틀렸다면 수정하십시오)입니다. HTML 태그를'base_64 '인코딩하기 때문에 모든 HTML 태그를 제거하고 있습니다. 이메일을 보내지 않고도 다른 방법으로 보낼 수 있는지 알아야합니다! 내 사용자가받는 이메일을 추가로 가져 오기 위해 Google의 message_ids 및 thread_ids를 저장해야하므로 SMTP를 사용할 수 없습니다. – user3523750

0

사용 인라인 스타일은 이메일/default_e을 설계하기 mail_template 페이지. CSS 클래스를 사용하지 마십시오. 수업을 사용하면 디자인이 Outlook 및 기타 이메일 서비스 도구에 표시됩니다. 그러나 Gmail에는 없습니다. gmail은 CSS 클래스 이름에 사전 문자를 추가하기 때문에.

+0

제 편집을 참조하십시오! – user3523750

0

이것에 대한 조사를 몇 시간 수행 한 후에 마침내 알아 냈습니다. 원시 메시지의 charsetContent-Type: text/html; charset=iso-8859-1 &이 아닌 utf-8으로 설정되어야합니다. 여기에이 주제에

더 -

Stackoverflow answer on the difference between UTF-8 and ISO-8859-1

Original article from Wikipidea on ISO-8859-1

이제 내 메일은 전술의 모든 스타일을 알아 가고있다. 다른 클라이언트에 체크인하면 & 모두 잘 작동합니다!