Add email sending when renewing or creating membership (#3)

master
Skylar Ittner 5 years ago
parent 52184bb67c
commit 2e01a25d95

@ -7,7 +7,8 @@
"guzzlehttp/guzzle": "^6.2",
"stripe/stripe-php": "^6.24",
"dompdf/dompdf": "^0.8.2",
"phpoffice/phpword": "^0.15.0"
"phpoffice/phpword": "^0.15.0",
"phpmailer/phpmailer": "^6.0"
},
"license": "MPL-2.0",
"authors": [

68
composer.lock generated

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"content-hash": "6f34e806ca8d5a98ea5816ce6865c253",
"content-hash": "fc511c5441078b0d99375ed15cbe16a0",
"packages": [
{
"name": "catfan/medoo",
@ -422,6 +422,72 @@
"homepage": "https://github.com/PhenX/php-svg-lib",
"time": "2018-06-03T10:10:03+00:00"
},
{
"name": "phpmailer/phpmailer",
"version": "v6.0.6",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "8190d73eb5def11a43cfb020b7f36db65330698c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/8190d73eb5def11a43cfb020b7f36db65330698c",
"reference": "8190d73eb5def11a43cfb020b7f36db65330698c",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-filter": "*",
"php": ">=5.5.0"
},
"require-dev": {
"doctrine/annotations": "1.2.*",
"friendsofphp/php-cs-fixer": "^2.2",
"phpdocumentor/phpdocumentor": "2.*",
"phpunit/phpunit": "^4.8 || ^5.7",
"zendframework/zend-eventmanager": "3.0.*",
"zendframework/zend-i18n": "2.7.3",
"zendframework/zend-serializer": "2.7.*"
},
"suggest": {
"ext-mbstring": "Needed to send email in multibyte encoding charset",
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
"league/oauth2-google": "Needed for Google XOAUTH2 authentication",
"psr/log": "For optional PSR-3 debug logging",
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
},
"type": "library",
"autoload": {
"psr-4": {
"PHPMailer\\PHPMailer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "Jim Jagielski",
"email": "jimjag@gmail.com"
},
{
"name": "Marcus Bointon",
"email": "phpmailer@synchromedia.co.uk"
},
{
"name": "Andy Prevost",
"email": "codeworxtech@users.sourceforge.net"
},
{
"name": "Brent R. Matzelle"
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
"time": "2018-11-16T00:41:32+00:00"
},
{
"name": "phpoffice/common",
"version": "0.2.9",

@ -0,0 +1,94 @@
<?php
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class Email {
private $subject = "";
private $body = "";
private $to = [];
private $fromaddress = "";
private $fromname = "";
private $smtphost = "";
private $smtpport = "";
private $smtpauth = "";
private $smtpusername = "";
private $smtppassword = "";
private $smtpsecurity = "";
public function setFrom(string $address, string $name = "") {
$this->fromaddress = $address;
if (empty($name)) {
$this->fromname = $address;
} else {
$this->fromname = $name;
}
}
public function setSubject(string $subj) {
$this->subject = $subj;
}
public function setBody(string $body) {
$this->body = $body;
}
public function addTo(string $email) {
$this->to[] = $email;
}
/**
* Set the SMTP configuration.
*
* @param string $host smtp.example.com
* @param int $port 587
* @param bool $auth true
* @param string $user
* @param string $pass
* @param string $security tls
*/
public function setSMTP(string $host = "smtp.example.com", int $port = 587, bool $auth = true, string $user = "", string $pass = "", string $security = "tls") {
$this->smtphost = $host;
$this->smtpport = $port;
$this->smtpauth = $auth;
$this->smtpusername = $user;
$this->smtppassword = $pass;
$this->smtpsecurity = $security;
}
public function send() {
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = $this->smtphost;
$mail->SMTPAuth = $this->smtpauth;
if ($this->smtpauth) {
$mail->Username = $this->smtpusername;
$mail->Password = $this->smtppassword;
}
if ($this->smtpsecurity != "none") {
$mail->SMTPSecure = $this->smtpsecurity;
}
$mail->Port = $this->smtpport;
$mail->isHTML(false);
$mail->setFrom($this->fromaddress, $this->fromname);
foreach ($this->to as $to) {
$mail->addAddress($to);
}
$mail->Subject = $this->subject;
$mail->Body = $this->body;
$mail->send();
}
}

@ -10,6 +10,7 @@ require_once __DIR__ . "/../../lib/requiredpublic.php";
require_once __DIR__ . "/../../lib/Family.lib.php";
require_once __DIR__ . "/../../lib/Child.lib.php";
require_once __DIR__ . "/../../lib/Email.lib.php";
function errorBack(string $errormsg) {
header("Location: ../?page=signup&error=" . htmlentities($errormsg));
@ -217,6 +218,42 @@ $database->action(function($database) {
"date" => date("Y-m-d H:i:s")
]);
try {
$confirmation = new Email();
$confirmation->addTo($family->getEmail());
$confirmation->setFrom(SMTP_FROMADDRESS, SMTP_FROMNAME);
$confirmation->setSMTP(SMTP_HOST, SMTP_PORT, SMTP_AUTH, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SECURITY);
if ($renewal) {
$confirmation->setSubject("HACHE renewal confirmation");
$confirmation->setBody("Your membership renewal has been processed.\r\n"
. "Thanks for being a HACHE member!");
} else {
$confirmation->setSubject("HACHE membership confirmation");
$confirmation->setBody("Your membership and payment have been recorded.\r\n"
. "A HACHE member will be in touch in the next few days.\r\n"
. "Thanks again and welcome to HACHE!");
}
$confirmation->send();
} catch (Exception $e) {
}
try {
$notification = new Email();
$notification->addTo(NOTIFICATION_TO);
$notification->setFrom(SMTP_FROMADDRESS, SMTP_FROMNAME);
$notification->setSMTP(SMTP_HOST, SMTP_PORT, SMTP_AUTH, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SECURITY);
if ($renewal) {
$notification->setSubject("HACHE renewal notification");
$notification->setBody("The " .$family->getName() . " family has renewed their HACHE membership.");
} else {
$notification->setSubject("HACHE membership notification");
$notification->setBody("The " .$family->getName() . " family has registered for a HACHE membership.");
}
$notification->send();
} catch (Exception $e) {
}
header("Location: ../?page=thanks");
return true;

@ -23,6 +23,16 @@ define("SITE_TITLE", "Membership Portal");
define("STRIPE_PUBKEY", "");
define("STRIPE_SECKEY", "");
define("SMTP_HOST", "");
define("SMTP_AUTH", true);
define("SMTP_SECURITY", "tls"); // tls, ssl, or none
define("SMTP_PORT", 25);
define("SMTP_USERNAME", "");
define("SMTP_PASSWORD", "");
define("SMTP_FROMADDRESS", "noreply@hachemt.org");
define("SMTP_FROMNAME", "HACHE");
define("NOTIFICATION_TO", "");
// URL of the AccountHub API endpoint
define("PORTAL_API", "http://localhost/accounthub/api.php");
// URL of the AccountHub home page

Loading…
Cancel
Save