How to create a newsletter application? - php

I'm required to create a newsletter php application that would send template emails to all subscribed to the system users.
We're currently using PostgreSQL so PhpList will not work for us if it's not capable to work with PostgreSQL.
What's the appropriate way of handling this task ? Also keep in mind that there will be big amounts of subscribers.
Edit: I'm opened to java applications that could do the trick..
Thanks in advance.

Get Mailman:
http://www.gnu.org/software/mailman/index.html
Then send your newsletter to mailman (that's just one adress) and allow mailman to distribute the Newsletter to thousands of recipients (that you configure in Mailman). Of course there is other software besides Mailman, that can do just that...

To make a custom newsletter daemon you can use System::Daemon.
Try using this example for daemons: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/
Beware:
If you make daemons that will run infinitive you should be aware that php caches things in the ram. So if you're not careful you'll end up with no ram :)

This tutorial is concentrating in sending out emails as such there's no login area covered, but it's recommended you should have your script to send emails stored somewhere secure so only people who should be able to access it can do.
Lets start with the form, all we need is a field for the subject and a field for the message, you can put HTML into the message as we will filter it out for the text email later

Related

import email data to the DB

I built support system (web) where my helpdesk can open new tickets/issues.
I want my clients to be able to send email with the issue text and file attache, to specific email address, and new ticket will be opened in my system.
For that I need to know how to scan the folder and how to add the email data to my DB.
what do I need to look for, in the internet, for that? what is the subject?
(I'm using PHP)
As the other's have commented, it's likely a larger task than you're ready to handle. But it doesn't hurt to try.
If I was tasked with the job, I'd take advantage of Gmail (for it's spam reducing features and large storage) to accept incoming email. From there, you simply need to setup a script that connects to your email account and processes the email for storage in your database.
Normally I recommend a solid library for making the job easier and cleaner, but I have a suspicion that you may not be familiar with OOP. If you at least know how to utilize classes, then check out Github:
https://github.com/search?l=PHP&q=imap&ref=searchresults&type=Repositories
Otherwise, if you're new and don't mind writing something "messy" then the following should at least point you in a good direction:
Connecting & retrieving emails for IMAP:
http://www.php.net/imap
http://www.php.net/manual/en/function.imap-open.php
Fetching/processing attachments:
(note that attachments are part of the email body)
http://www.php.net/manual/en/function.imap-fetchstructure.php
Storing attachments (in the filesystem):
http://www.php.net/manual/en/function.mkdir.php
http://www.php.net/manual/en/function.file-put-contents.php
There's plenty of Googling left for you to do. So go forth and make a lot of mistakes. Read the manual. Kick yourself for not having read it sooner, then go make more mistakes. Isn't that how most of us learn?
The first thing that comes to mind is to pop the most recent emails if you have pop3 set up or use imap functions. I did something similar to this using c# using openpop.net. So that could be a starting point.
You can use this method, using the cURL to fetch the emails from Gmail server through feed atom. XML response will return and we can convert it to HTML.
http://www.code4share.net/items/get-unread-email-in-gmail-by-php/XRGXVVh.html

Website performance when sending emails in php

I plan to send an excess amount of emails daily to my website users. I am using php. Will such a task affect the performance of my website? What can be done to prevent issues?
Note: Emails are sent with users consent and scheduled by them. No spamming.
Instead of sending the email directly, why not create a database table to store the email details. and just write to that table each time you need to send an email.
Then have a scheduled task that occasionally queries this table and do the mail sending.
That way, you do not need to worry about the php page timing out. and in future, you can also pull the schedule task out and run it on a separate server if it uses too much resources.
Some off the top of my head:
If your on shared hosting, you may get shut down for attempted spamming
The server IP may get labelled as a spam source if your sending email to random people
Send the emails in a cronjob rather than in real time, that way you can do the email sending at non-peak times
My suggestion and the way we handle this is to utilize a message queue, we currently use Zend Frameworks Package, then from a cron job retrieve the queue and send the email. This enables us to increase performance and avoid delays in displaying the page to the user. Hope that helps!

Need help creating a mass email program

New to the forum but love the comments. I'm tech savvy but not when it comes to programming, coding etc. So - I guess that makes me tech stupid for the moment.
Basically - I want to create a mass email program that will allow us to send bulk emails to our customers who signed an email slip. Currently - we're at 100,000 or so in our database but we expect to see this rise to 200,000 at some point.
What is the best script language to use for this?
Is PHP going to be handle this many emails?
What is the most emails that I can send in any one batch for it to still be "safe" so that the emails arrive to the proper recipients?
What is the term when you send directly from the server?
We currently have 3 servers and I'm assuming they are capable of doing this no problem...but I haven't spoken to our webhosting company just yet.
Lastly - I put together a powerpoint...that gives specs - is there anyone here that would be interested in a little side work to do the project? Really interested in the feedback. Thanks.
In general and based off what you said -- do not create your own mass email program.
Use a service, such as MailChimp or iContact.
Here's a small list of some of the things they do for you:
Manage the list
Handle unsubscriptions
Handle soft bounced emails
Handle hard bounced emails
Handle white listing (You have to pay third party companies $$$s a month to be on these lists)
Give you an idea of how likely and spammy your email is
How fast your email can be sent out (AOL will put you on their blacklist if you send out too fast)
Handle Analytics (such as how many were opened, when, where, what links were clicked on, linking to Google Analytics)
Handle multiple lists and variable replacement (such as "Dear _____")
Nice, easy-to-use interface.
Again, that's a small list in the scheme of things. Those were off the top of my head without too much thought.
EDIT
A couple big advantages I didn't mention:
a) Support
b) A community
c) Constant improvements
d) No server-management
Step 1. Acquire a real email server.
Step 2. Utilize said email server by having your scripts send the mail to it for delivery, and not directly.
Step 3. Throttle the mail server as necessary
Step 4. Monitor the non-delivery reports and remove addresses as necessary...
It depends on how you do this. You can:
1) loop and send 100 000 individual mail
2) Send 1 email with 100 000 people in BCC
or mix both. php can handle it well, but it's a huge task on the mail server.

How to handle mass email

I'm about ready to unveil a "coming soon" page and one thing I need is a way for users to enter their email address for me to email once the site goes live. What is the best way to do this?
Should I store the emails in a DB and then run a PHP script to email them from my web host? Should I have the emails just kind of be collected and then emailed manually by me either locally or from the server? Is there another way I should do it?
Also, are there certain web-hosts that restrain the amount of emails you can send out, thus causing a problem for mass email.
The only "unknown" currently is how large of a response I'll get...only time will tell.
Thanks guys!
Store it in the database - Yes. It's no unlike storing any other piece of data.
Mass email at once - No
Mass email manually (or individually mail manually) - No
Do some web hosts limit how many you can send at once? - Yes
I don't know the "best" way but I know a really good way. We have built several mass emailing programs and the technique we incorporated was a throttling technique whereby we had a script that ran every three minutes and sent 20 emails at a time.
It keeps the server from choking and the mail queue from exceeding any of our hosts' mail limits.
Store the email addresses in a database and write a batch job that mail merges them into your message and sends them out as needed.
There are dozens of methods you can use for this kind of problem, but unfortunately there's no real way to pinpoint a solution for you, since there are a lot of variables.
If you only get 3 responses, then you might want to just manually email the users from your email client using BCC:. You've already got all the tools you need to do that, and setting up a script might be a waste of time. This isn't really a great long-term solution however.
For most moderate-sized web sites you would store the emails in a database, and use a mailing script to send them out. PHPMailer is a good tool to help with getting mail sent, and you can manage a decent amount of email addresses manually. Managing addresses manually can be a bit of a pain however, as you have to deal with unsubscribe links, script timeouts, bounced email, etc.
If you get up the tens of thousands of email addresses, you may want to start looking at a third-party mailing software or service that can do threaded sending. Looping through and sending email to 50,000 people via a PHP script can be slow, and take hours.
Basically you have to weigh the difficulty, time and cost of each method versus how much flexibility and power you think you're going to need.
To store emails in a db, and sending them out using a cronjob is a good way to solve the problem, if you have constrains regarding the amount of emails you're allowed to send within a period of time, you can handle it by keeping track of how many emails you've sent every time the cronjob runs.
Also, there are open source products to do this, such as phplist http://www.phplist.com/
Like Eric mentioned above, another option is to use a commercial service to manage your mailing list.
I use Mailchimp (http://www.mailchimp.com). They give you everything you need (signup forms, email templates, etc.), and are completely free unless your list grows to more than 500 subscribers.
Writing the emails to a database or a text/log file are both fine ways to store the emails.
Depending on how many emails you receive, you may want to write a program (PHP works) to send a separate email to each person. Don't send a mass email from your regular email client with everyone on a big To: line.
There are also commercial programs that manage mailing to lists of people (probably open source ones, too). Most of those commercial ones offer a free trial period.

PHP/MySQL mailing list, mailer and subscription classes

I am working on a project that needs a emailable mailing list built into it with a very complex list structure. Originally I thought I could just use PHPList to do the job with some minor alterations because of its list management. But now I'm finding that I'm going to need to build this from scratch. PHPList is way to complex to make tweaks to.
So I'm looking for recommendations of scripts, classes, functions to help with the processes so I can just focus on the logic and list management.
The requirements are as follows:
User Subscription web form that captures name and email. Double opt-in that sends a confirmation email with a link back to a landing page. (Looking for a simple script to manage this aspect).
Landing page for opt-in confirmation from subscription email. This is where I need to include my list structure. The lists are very deep nested set trees and way beyond the scope of any mailing list I've come across. I'll need to build this part as it is too complex.
User login for future tweaking of their list settings. Would like a script to help with this aspect.
Admin page for constructing the email (html format). Looking for a simple script to help with this process. The site uses CKEditor for most html input so I could just end up using that here. I also then need to link it to the nested set tree list so I'll need to construct this portion myself. Looking for a simple class/script that I can use as a starting point to help with the structure.
Mail manager script. Ideally would like a cron job option to send the emails at a certain time each day/week. Also would like it to stagger the emails with a pause every 25 or so to bypass spam flags. A log file of what got sent where would be ideal. I'll need to construct the logic of what gets sent where because of the list structure. Would like an existing management script as a starting point.
Mailer script. Finally need a class/script to do the actual sending. I've used phpmailer in the past but wondered if there was anything better nowadays.
As I said at the start, PHPList is reasonably close but was far too complicated in its structure to be delving and changing the way it handles the lists. As such I'm looking for scripts that are user-friendly to tweak and hack.
My 2 cents on this:
use utf-8 for all the system
normalize your emails
create a master suppression list
(many domains wont like you sending
emails to them. with this you can
avoid send emails to people who
probably will block you)
sending emails: create a queue:
divide the process in stages: email
rendering / email sending / etc
phpmailer is enough good
abuse of the use of the
"List-unsubscribe" header and many
others
create a really good bounce handling
script (since keep sending to bad
addresses kill the reputation)
setup you rdns for all your sending
ips
use spf and DKYM
clean the email's body from bad
user input.... some users will try
to send "embed" tags on the body..
that kill the sender reputation
follow all ISP/ESP instructions
about: email per connections /
timeouts / etc ..... yahoo! has it
as many others ISP

Categories