質問編集履歴

2 $auth_url .= &name=aaaaa;を$auth_url .= "&name=aaaaa";に修正しました。表記ミスでした。

natlpush

natlpush score 20

2016/09/30 15:45  投稿

Gmail APIを使いPHPでのメール送信に変数を利用したいです
###前提・実現したいこと
Gmail api を使いメール送信を行います。
下記のURLを参考にコードを書き、無事に動きましたが・・・
https://www.note.technology/note/201604102243
下記のソースでは件名や本文が直接書き込んであります。
ここを変数で処理したいのですが上手く行きません。
クエリを上手く渡す方法をお知りの方、お力をお貸しいただけますでしょうか。
###該当のソースコード
```ここに言語を入力
<?php
session_start();
require_once 'google-api-php-client-2.0.0-RC7/vendor/autoload.php';
$client_id    = '**********';
$client_secret = '**********';
$redirect_uri = {redirect_uri};
$to_email_address = {to_email_address};
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setState('offline');
$client->addScope("https://www.googleapis.com/auth/gmail.compose");
$service = new Google_Service_Gmail($client);
$auth_url = $client->createAuthUrl();
if(isset($_GET['code']))
{
   //get access token
   $client->authenticate($_GET['code']);
   $_SESSION['access_token'] = $client->getAccessToken();
   header("Location: {$redirect_uri}");
}elseif(isset($_SESSION['access_token'])){
   //mail send
   $client->setAccessToken($_SESSION['access_token']);
   $subject = mb_convert_encoding( "タイトル", "JIS", "UTF-8" );
   $subject = "Subject: =?ISO-2022-JP?B?" . base64_encode($subject) . "?=";
   $to = "To: {$to_email_address}";
   $body = "本文。";
   $send_data = "$subject\n$to\n\n$body";
   $send_data = rtrim(strtr(base64_encode($send_data), '+/', '-_'), '=');
   $msg = new Google_Service_Gmail_Message();
   $msg->setRaw($send_data);
   $result = $service->users_messages->send("me", $msg);
   unset($_SESSION['access_token']);
}else{
   //oauth
   print("<a href=\"{$auth_url}\">認証してテストメールを送信</a>");
}
```
###試したこと
上記ソースの冒頭部分に以下を挿入しました。
```ここに言語を入力
$name=$_GET['name'];
$message = <<< EOF
{$name} さま
本文
EOF;
```
そして
$body = "本文。";
$body = $message;
としました。
$auth_url = $client->createAuthUrl();
の後に
$auth_url .= &name=aaaaa;
$auth_url .= "&name=aaaaa";
と試しにしたところ、nameが空白になってしまいクエリが渡せません。
変数でnameを変化させたいのですが、お力をお借りできますでしょうか。
どうぞよろしくお願いいたします。
  • PHP

    23978 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • API

    1816 questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • GET

    102 questions

    GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

  • Gmail

    131 questions

    GmailとはGoogleによって提供されているウェブメールのサービスのことです。

1 コードをコードブロックで囲みました

natlpush

natlpush score 20

2016/09/30 14:56  投稿

Gmail APIを使いPHPでのメール送信に変数を利用したいです
###前提・実現したいこと
Gmail api を使いメール送信を行います。
下記のURLを参考にコードを書き、無事に動きましたが・・・
https://www.note.technology/note/201604102243
下記のソースでは件名や本文が直接書き込んであります。
ここを変数で処理したいのですが上手く行きません。
クエリを上手く渡す方法をお知りの方、お力をお貸しいただけますでしょうか。
###該当のソースコード
```ここに言語を入力  
<?php
session_start();
require_once 'google-api-php-client-2.0.0-RC7/vendor/autoload.php';
$client_id    = '**********';
$client_secret = '**********';
$redirect_uri = {redirect_uri};
$to_email_address = {to_email_address};
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->setState('offline');
$client->addScope("https://www.googleapis.com/auth/gmail.compose");
$service = new Google_Service_Gmail($client);
$auth_url = $client->createAuthUrl();
if(isset($_GET['code']))
{
   //get access token
   $client->authenticate($_GET['code']);
   $_SESSION['access_token'] = $client->getAccessToken();
   header("Location: {$redirect_uri}");
}elseif(isset($_SESSION['access_token'])){
   //mail send
   $client->setAccessToken($_SESSION['access_token']);
   $subject = mb_convert_encoding( "タイトル", "JIS", "UTF-8" );
   $subject = "Subject: =?ISO-2022-JP?B?" . base64_encode($subject) . "?=";
   $to = "To: {$to_email_address}";
   $body = "本文。";
   $send_data = "$subject\n$to\n\n$body";
   $send_data = rtrim(strtr(base64_encode($send_data), '+/', '-_'), '=');
   $msg = new Google_Service_Gmail_Message();
   $msg->setRaw($send_data);
   $result = $service->users_messages->send("me", $msg);
   unset($_SESSION['access_token']);
}else{
   //oauth
   print("<a href=\"{$auth_url}\">認証してテストメールを送信</a>");
}
```  
###試したこと
上記ソースの冒頭部分に以下を挿入しました。
```ここに言語を入力  
$name=$_GET['name'];
$message = <<< EOF
{$name} さま
本文
EOF;
```  
そして
$body = "本文。";
$body = $message;
としました。
$auth_url = $client->createAuthUrl();
の後に
$auth_url .= &name=aaaaa;
と試しにしたところ、nameが空白になってしまいクエリが渡せません。
変数でnameを変化させたいのですが、お力をお借りできますでしょうか。
どうぞよろしくお願いいたします。
  • PHP

    23978 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • API

    1816 questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • GET

    102 questions

    GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

  • Gmail

    131 questions

    GmailとはGoogleによって提供されているウェブメールのサービスのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る