You can get access token & other details to perform this action:
http://pritomkumar.blogspot.com/2016/11/using-oauth-20-for-google-client-side.html
http://pritomkumar.blogspot.com/2016/11/using-oauth-20-for-google-client-side.html
Code snippet to send mail using google & php using google oauth
<?php session_start(); init(); if(isset($_POST["send"])) { sendEmail(); } else { ?> <form method="post" enctype="multipart/form-data" accept-charset="ISO-8859-1"> <table style="width: 1000px;"> <tr> <td style="width: 150px;">To</td> <td style="width: 850px;"><input type="text" name="to" required value="" style="width: 100%;"/></td> </tr> <tr> <td>Subject</td> <td><input type="text" name="subject" required value="Some sample subject on <?php echo date("d/m/Y H:i:s"); ?>" style="width: 100%;"/></td> </tr> <tr> <td>Files</td> <td> <input type="file" name="files[]"/> <input type="file" name="files[]"/> <input type="file" name="files[]"/> <input type="file" name="files[]"/> <input type="file" name="files[]"/> <input type="file" name="files[]"/> </td> </tr> <tr> <td style="vertical-align: top;">Message</td> <td><textarea name="message" required style="width: 100%; height: 600px;"></textarea></td> </tr> <tr> <td></td> <td><input type="submit" name="send" value="Send"/></td> </tr> </table> </form> <?php } function init() { $_SESSION["google_user_id"] = "118224585666607576118"; $_SESSION["access_token"] = "ya29.CjCgdfgdfgdfgROwgDCiVa4ZvfzThKO6I272GJGQoWIEmwvgcNtks0exmxlUmzQ"; /* Permissions need to send email */ $_SESSION["scope"] = "https://www.googleapis.com/auth/userinfo.profile"; /* User profile */ $_SESSION["scope"] .= " https://www.googleapis.com/auth/gmail.send"; /* Send email */ } function sendEmail() { $to = trim($_POST["to"]); if (strlen($to) == 0) { die("Need email address to send email"); } $cc = ""; $bcc = ""; $nl = "\r\n"; $boundary = md5(date('r', time())); $html = trim(utf8_encode($_POST["message"])); $attachment_body = ""; for($i = 0; $i < 6; $i++) { if(strlen(trim($_FILES["files"]["name"][$i])) > 0) { $content = file_get_contents($_FILES["files"]["tmp_name"][$i]); $content = base64_encode($content); $this_attachment = "--".$boundary.$nl."Content-Type: ".$_FILES["files"]["type"][$i].$nl; $this_attachment .= "Content-Transfer-Encoding: base64$nl"; $this_attachment .= "Content-Disposition: attachment; filename=\"".$_FILES["files"]["name"][$i]."\"$nl$nl"; $this_attachment .= $content; $attachment_body .= $this_attachment.$nl; } } $message = "Return-Path: pritomkucse@gmail.com$nl". "From: your_email@gmail.com$nl". "Reply-To: \"Reply To\" <some_reply_address@gmails.com>$nl". "MIME-Version: 1.0$nl". "Date: ".date('d/m/Y H:i:s')."$nl". "Subject: Test email on: ".date("d/m/Y H:i:s")."$nl". "To: $to$nl". //"CC: \"CC Address\" <$cc>$nl". //"BCC: \"BCC Address\" <$bcc>$nl". "Content-Type: multipart/mixed; boundary=\"$boundary\"$nl$nl". "--$boundary$nl". "Content-Type: text/html; charset=iso-8859-1".$nl. "Content-Transfer-Encoding: 7bit$nl$nl". "$html$nl". "$attachment_body". "--$boundary--"; echo "<pre>[[";print_r($message);echo "]]</pre>"; $submit = array(); $submit["raw"] = encode_content($message); $submit = json_encode($submit); $headers = array(); $headers[] = "Content-Type: application/json"; $headers[] = "Content-Length: " . strlen($submit); $apiUrl = "https://www.googleapis.com/gmail/v1/users/"; $apiUrl .= $_SESSION["google_user_id"]."/messages/send?format=raw"; $apiUrl .= "&access_token=".$_SESSION["access_token"]; $result = runCurl($apiUrl, $submit, $headers); echo "<pre>"; echo $result; echo "</pre>"; die(); /* $result will print output as below: You can get unique Message-ID by read an email from server with email id "1588519a5db4ecfe" (as below) HTTP/1.1 200 OK Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: Mon, 01 Jan 1990 00:00:00 GMT Date: Mon, 21 Nov 2016 04:16:40 GMT Vary: X-Origin Content-Type: application/json; charset=UTF-8 X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Server: GSE Alt-Svc: quic=":443"; ma=2592000; v="36,35,34" Accept-Ranges: none Vary: Origin,Accept-Encoding Transfer-Encoding: chunked { "id": "1588519a5db4ecfe", "threadId": "1588519a5db4ecfe", "labelIds": [ "SENT" ] } */ } function encode_content($content) { $content = base64_encode($content); $content = str_replace("+", "-", $content); $content = str_replace("/", "_", $content); //$content = rawurlencode($content); return $content; } function runCurl($url, $post = null, $headers = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, $post == null ? 0 : 1); if($post != null) { curl_setopt($curl, CURLOPT_POSTFIELDS, $post); } curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSLVERSION, 1); if($headers != null) { curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); } $response = curl_exec($curl); $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if($http_code >= 400) { echo "Error executing request to Office365 api with error code=$http_code<br/><br/>\n\n"; echo "<pre>"; print_r($response); echo "</pre>"; die(); } return $response; } ?>