horst

WireMailSmtp

Recommended Posts

2 hours ago, Sonia Margollé said:

I use OVH 

The site is on for more than a year now,  I had a lot of "Error in hnsmtp::send : cannot connect to smtp-server!"  
even if I never change module configuration and if I check it's ok. And now the recipients ...

All the emails that I send using the module it's only to 1 recipients and sometimes another on in copy.

Check this out:

http://docs.mailpoet.com/article/49-lists-of-hosts-and-their-sending-limits

 

For OVH:

591f10824f724_ScreenShot2017-05-19at11_33_18.thumb.png.b068c9e4bb22c4e28fe4178a05a8dd6e.png

 

Most likely because of bounces, your site is unable to send emails.

A couple of things you can do:

1. Contact OVH and ask them to give you some idea of what your email's standing is.

2. Use a service like Sendgrid (sendgrid.com) as an off-site SMTP delivery service. If I remember correctly, Sendgrid is free up to 12,000 emails a day.

 

Hope this helps!

  • Like 1

Share this post


Link to post
Share on other sites

Thanks, I will check that !

I try to put some log in the module and I was able to have a more detailed error message, I think

"554 5.7.1 <---->: Recipient address rejected: You have exceeded the limit of 400 messages per hour and per IP address. Please, re-try later."

What I don't understand is how that can be, never 400 messages are send via the website, and not 20 per hour to.  Oo
If I wait like 30 seconds, it's ok again.  And the emails are good, the clients can send emails directly without problems. 

Knowing it's a shared hosting, is it possible that other peoples on the server are blocking everyone ? 

  • Like 1

Share this post


Link to post
Share on other sites
3 minutes ago, Sonia Margollé said:

"554 5.7.1 <---->: Recipient address rejected: You have exceeded the limit of 400 messages per hour and per IP address. Please, re-try later."

Knowing it's a shared hosting, is it possible that other peoples on the server are blocking everyone ? 

If it's shared hosting and all of the sites on your IP are potentially sending emails, that is almost certainly your problem.

Again, I'd look into an email delivery service like Sendgrid, Mandrill or even TurboSMTP - these will help with deliverability, and you won't be competing with other sites on the same IP to get emails out.

  • Like 2

Share this post


Link to post
Share on other sites

I'm not knocking sendgrid, or any other email service. After working in the adult industry (I know, don't judge me. I was young and needed the money :) ), I am not too fond of services that want a 'contacts list' stored at their site. You may want to consider gmail, or the like, for sending small quantities of emails. If you need an email company domain, eg, yourname@yourdomain.com, then they will provide that for a small monthly fee, usually $5 or so. I have never exceeded gmail's limit, and it is far better than trying to run your own email server.

Also, the majority of my applications require subscribers to use their company email address. I have the company create a site admin email address on behalf of the application, which eliminates the need for any third-party solutions.

If you need the capacity of those email services, then by all means use them. They handle that particular need well. Just be cautious of how they treat your contacts, if they require it.

Another possibility is to move to a VPS hosting account that has an email feature. That way you are the only user that they audit to affect any email limitations.

 

  • Like 1

Share this post


Link to post
Share on other sites

I have a little problem:

I installed the plugin, set up my form submit PHP file and when I do a connection check - everything is ok! There is no error at all.

When sending the mail it is logged and everything seems fine. Except one thing: The message is never delivered!

Of course I tried to look into the spam folder - but no. The email just seems to disappear when hitting the submit button.

To make sure that my server is running correctly i tried the native mail() PHP method with the form - that is working!

 

So what might be the error in this case? Any ideas?

 

Share this post


Link to post
Share on other sites
15 hours ago, cstevensjr said:

Make sure you are at least testing sending from one mail provider to another.

Here are two links that may help you:

http://kb.mailchimp.com/delivery/spam-filters/im-not-receiving-my-test-campaigns

https://productforums.google.com/forum/#!topic/gmail/HB31aN_GR_8

 

Sending e-mails from one acccount to another works fine. I just can't get wiremail to do it. I even tried it with different mail accounts.

Share this post


Link to post
Share on other sites

If possible, What domain where you sending from and to what domain where you sending to in your test emails?  Are these accounts/SMTP Service associated with Your Hosting Provider, Gmail, Microsoft or any other third-party email provider?

  • Like 2

Share this post


Link to post
Share on other sites
2 hours ago, cstevensjr said:

If possible, What domain where you sending from and to what domain where you sending to in your test emails?  Are these accounts/SMTP Service associated with Your Hosting Provider, Gmail, Microsoft or any other third-party email provider?

I tried both. Sending from mail accounts of my hosting provider to the same accounts. Or third party mail providers. Nothing gets delivered. I think I'll ask the support of my hosting provider.

Share this post


Link to post
Share on other sites

You should try to uninstall WireMailSMTP and try sending with native WireMail. This should work, as it uses the PHP mail() function.

If WireMail works, and WireMailSMTP don't, it might be firewall restricted by your hosters settings. Native PHP mail function is controlled and allowed by your hoster, other (foreign) connections (other IPs or only Ports) maybe blocked by firewall settings of your hoster. (?)

  • Like 3

Share this post


Link to post
Share on other sites
23 hours ago, horst said:

You should try to uninstall WireMailSMTP and try sending with native WireMail. This should work, as it uses the PHP mail() function.

If WireMail works, and WireMailSMTP don't, it might be firewall restricted by your hosters settings. Native PHP mail function is controlled and allowed by your hoster, other (foreign) connections (other IPs or only Ports) maybe blocked by firewall settings of your hoster. (?)

That's good point to start with!

I have already contacted my provider becaouse I think there could be a firewall issue, too. Otherwise I have no explanation for this.

However, I will definetly test out the native WireMail variant.

Share this post


Link to post
Share on other sites

Problem solved.

My bad. In my source code I had commented out the following line:

$numSent = $mail->send();

That was the case because a little time ago when I was developing the submit form, I must have tried to test something. 

What made me so confused was the fact that the activity log still said "mail send" so I never looked into this part of the code again.

Now that's a really stupid thing, sorry that I bothered you with it. 

 

  • Like 2

Share this post


Link to post
Share on other sites

I've installed WireMailSmtp on my locally hosted ProcessWire site v 3.0.62 and filled in my sendgrid data and get a WireMailSmtpConfig: SUCCESS! upon testing

When I try the following:

if($mail->className != 'WireMailSmtp') {
    echo "<p>Couldn't get the right WireMail-Module (WireMailSmtp). found: {$mail->className}</p>";
}

I get "Couldn't get the right WireMail-Module (WireMailSmtp). found: WireMail"

How do I get the wiremail function to make use of the WireMailSMTP addon?

Share this post


Link to post
Share on other sites

Interesting would be how you have initialized $mail?

Share this post


Link to post
Share on other sites

In PW 3.0.42 when editing a user this error appears up top:

Quote

Strict Standards: Declaration of WireMailSmtp::attachment() should be compatible with ProcessWire\WireMail::attachment($value, $filename = '') in /Applications/AMPPS/www/catco/site/assets/cache/FileCompiler/site/modules/WireMailSmtp-master/WireMailSmtp.module on line 22

 

Share this post


Link to post
Share on other sites
On 3.9.2017 at 2:46 AM, hellomoto said:

In PW 3.0.42 when editing a user this error appears up top:

 

@hellomoto I couldn't reproduce this. Which version of WireMailSmtp you're using? I am on the same PW version but I am currently struggeling with the HTML signature. 

 

Using this code, triplechecked that at HTML signature is stored in the WireMailSmtp settings, but - and thats the fun fact - it does not work within a HTML mail - but the signature is added to the plaintext. 

		$mail = wireMail();
		$mail->from($email, $name);
		$mail->to("me@me.com", "Me");
		$mail->subject('new message - '.$config->httpHost);
		//$mail->addSignature(true); ==> has no effect either since I chose "send signature with _every_ message" in the module settings
		$mail->bodyHTML($message);
		$mail->send();

 

Has this happened to anyone before? And if so: how did you solve this?

Share this post


Link to post
Share on other sites

@chrizz can you confirm that your html-message doesn't contain a body endtag?

</body>

If this is the case, you can update the module to the new version 0.2.5, where this is fixed.

Share this post


Link to post
Share on other sites

@horst it doesn't have any tags (except the tags I am adding to the message manually).

I tried a downgrade to 0.2.3 => no success - same problems

I just installed version 0.2.5 => still no tags but the signature is there... 

this is what the mail content looks like (headers are removed)

--3e089748ac63f63eedf33dc907a71870
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

hallo

--
PLAIN blablabla
--3e089748ac63f63eedf33dc907a71870
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<strong>hallo</strong>

HTML <br><br><strong>blablabla</strong>
--3e089748ac63f63eedf33dc907a71870--

so it seems as if my problem has been solved - but it's still somehow weird that there are not tags... If you want me to share more details and/or sources please let me know. Would be glad if I can help you :) 

Thanks for providing this module & the support!

 

 

Share this post


Link to post
Share on other sites

@chrizz my question was, if you used <head></head><body></body> tags in your HTML-message.

Now I know, you don't. :)

That was the reason why the Signature wasn't attached to the HTML-message-part.
https://github.com/horst-n/WireMailSmtp/blob/532dd94752597a4b2b9f3a2c02ef48b21db77f84/WireMailSmtpAdaptor.php#L280-L285

With the modules update to version 0.2.5, the html-signature get added in both cases.

  • Like 2

Share this post


Link to post
Share on other sites

hehe... fair enough to check for a closing tag ;) 

Next time I'll promise I'll use correct markup which would have solved the problem right away. Thanks for your support :)

 

  • Like 1

Share this post


Link to post
Share on other sites

Hi,

WireMailSMTP was working fine, but somehow it stops, now all I get it this:

ERROR: SMTP settings did not work.
could not start TLS connection encryption protocol

tried with google and yandex, same error....

 

Regards,

Share this post


Link to post
Share on other sites

I am experiencing problems when sending through Gmail on a site that is sending out quite a lot of emails to different recipients.

It used to work for about a month and now suddenly Google is blocking my app. It seems that Google regards the app as less secure.

I am wondering if someone has had similar issues with Gmail?

I know there is a setting in Gmail to allow less secure apps. But I would like to know why Google thinks the app is less secure.

Does it have something to do with headers being sent by WireMail that Google disqualifies as insecure? 

Here is the data array from the WireMailSmtp object (sensitive data has been replaced by xxx):
 

default_charset => "UTF-8" (5)
localhost => "dev.xxxtors.com" (31)
smtp_host => "smtp.gmail.com" (14)
smtp_port => 587
smtp_ssl => ""
smtp_start_tls => 1
smtp_user => "info@xxxtors.com" (32)
smtp_password => "xxx" (11)
smtp_password2 => ""
clear_smtp_password => ""
realm => ""
workstation => ""
authentication_mechanism => ""
smtp_debug => 0
smtp_html_debug => 0
sender_name => "xxx" (24)
sender_email => "info@xxxtors.com" (32) 
sender_reply => ""
sender_errors_to => ""
sender_signature => ""
sender_signature_html => ""
send_sender_signature => "1"
extra_headers => ""
valid_recipients => ""
smtp_certificate => ""

And here the mail object data

to => array (2)
"xxx@gmail.com" => "xxx@gmail.com" (26)
"xxx@mailbox.org" => "xxx@mailbox.org" (28)
toName => array (2)
"xxx@gmail.com" => ""
"xxx@mailbox.org" => ""
cc => array ()
ccName => array ()
bcc => array ()
from => "info@xxxtors.com" (32)
fromName => "xxx" (24)
priority => ""
dispositionNotification => ""
subject => "xxx" (51)
body => "This is an automatically created email. Please do not reply.

xxx" (139)
bodyHTML => "xxx" (183)
addSignature => NULL
attachments => array ()
header => array (1)
"X-Mailer" => "ProcessWire/WireMailSmtp" (24)
sendSingle => FALSE
sendBulk => FALSE
useSentLog => FALSE
wrapText => FALSE

Does anyone have an idea why Gmail thinks these mails are less secure?

Share this post


Link to post
Share on other sites

No, I don't know. But I see, that you have not set the sendBulk param to true.  For automatic messages, you should set it to true, even if you send single emails. 

  • Like 1

Share this post


Link to post
Share on other sites
8 hours ago, gebeer said:

Does anyone have an idea why Gmail thinks these mails are less secure?

Its because you are storing/sending a Google Account password on your own instead of using a "secure" flow like OAuth2 apps. E.g. using less secure apps is not possible with a 2FA account.

https://support.google.com/accounts/answer/6010255?hl=en

 

Quote

Google may block sign-in attempts from some apps or devices that do not use modern security standards. Since these apps and devices are easier to break into, blocking them helps keep your account safe.

 

  • Like 3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Macrura
      This is a new module, hope to release soon, which allows extended field descriptions, in currently 2 ways.
      The main feature of the module is that you can have a short description and then a 'more...' link which drops down a longer block of text.
      This is achieved by separating the intro/visible text and the rest with 5 dashes.

      Example setup:

      the 2nd way is if you are using AdminThemeUiKit, you can show extended field instructions in a panel. The content of the panel is edited on a regular PW page. This use case would probably not be that common, but if you had a field that required some extended instructions for how to use, this could be useful; Also, since this allows you to target information and instructions down at the field level, it could reduce the amount of documentation needed on a global level, since it is a lot more context targeted.

    • By netcarver
      Part 1 of a 2 part Module & Service Reveal.
      I'm currently working on a new module: ModuleReleaseNotes that was inspired by the work I originally did on making Ryan's ProcessWireUpgrades module "release" aware. In the end, I decided to ditch the approach I was originally taking and instead work on a module that hooked in to the UpgradeConfirmation dialog and the module edit page.
      Aims
      My aims for this module are as follows...
      Make discovery of a module's changes prior to an upgrade a trivial task. Make breaking changes very obvious. Make reading of a module's support documentation post-install a trivial task. Make module authors start to think about how they can improve the change discovery process for their modules. Make sure the display of information from the module support files/commit messages doesn't introduce a vulnerability. Looking at these in turn...
      Making discovery of a module's changes prior to upgrade a trivial task.
      This is done by adding a "What's changed section" to the upgrade confirmation dialog.  This section takes a best-effort approach to showing what's changed between the installed version and the updated version that's available via the module repository.
      At present, it is only able to talk to github-hosted repositories in order to ask them for the release notes, the changelog file (if present) and a list of commits between the git tag that matches the installed version and the tag matching the latest version.
      It will display the Release Notes (if the author is using the feature), else it will display the commits between the tags (if tagging is used by the module author) else it will show the changelog file (if present) else it will show the latest N commits on the master branch (N, of course, being configurable to your liking.)
      An example of the Github Release Notes pulled in for you, taken from Mike Rockett's TextformatterTypographer Module...

      An example of a tag-to-tag commit list from the same module...

      An example of a changelog - formatted to show just the changes (formatting styles will change)...

      Finally, an example of a fallback list of commits - sorry Adrian ...

       
      Making breaking changes obvious.
      This is currently done by searching for a set of configurable search strings. Later versions may be able to support breaking change detection via use of Semantic Versioning - but this may require some way of signalling the use of this versioning standard on a module-by-module basis.
      For now, then, you can customise the default set of change markers. Here I have added my own alias to the list of breaking change markers and the changes section of the changelog is styled accordingly (these will be improved)...

       
      Make reading of a module's support documentation, post-install, a trivial task.
      This is done by making some of the support files (like the README, CHANGELOG and LICENSE files) readable from the module's information/settings screen. There is an option to control the initial open/closed state of this section...

      Here is Tracy's README file from within the module settings page... 

       
      Make module authors start to think about how they can improve the change discovery process for their modules.
      There are notes in each of the sections displayed on the upgrade confirmation page that help authors use each of the features...

       
      Make sure display of external information doesn't introduce a vulnerability.
      This is an ongoing concern, and is the thing that is most likely to delay or prevent this module's release. Currently, output is formatted either via Markdown + HTML Purifier (if it was originally a Markdown file) or via htmlspecialchars() if it has come from a plaintext file.
       
      Ongoing...
      For now, I've concentrated on integration with GitHub, as most people use that platform to host their code. I know a few people are hosting their repositories with BitBucket (PWFoo comes to mind) and some with GitLab (Mike Rockett?) and I would eventually like to have adaptor implementations for these providers (and perhaps GitKraken) - but for now, GitHub rules and the other hosts are unsupported.
      I hope to have this ready for general release within the next week.
    • By blynx
      Hej,
      A module which helps including Photoswipe and brings some modules for rendering gallery markup. Feedback highly appreciated

      Modules directory: http://modules.processwire.com/modules/markup-processwire-photoswipe
      .zip download: https://github.com/blynx/MarkupProcesswirePhotoswipe/archive/master.zip
      You can add a photoswipe enabled thumbnail gallery / lightbox to your site like this. Just pass an image field to the renderGallery method:
      <?php $pwpswp = $modules->get('Pwpswp'); echo $pwpswp->renderGallery($page->nicePictures); Options are provided like so:
      <?php $galleryOptions = [ 'imageResizerOptions' => [ 'size' => '500x500' 'quality' => 70, 'upscaling' => false, 'cropping' => false ], 'loresResizerOptions' => [ 'size' => '500x500' 'quality' => 20, 'upscaling' => false, 'cropping' => false ], 'pswpOptions' => (object) [ 'shareEl' => false, 'indexIndicatorSep' => ' von ', 'closeOnScroll' => false ] ]; echo $pswp->renderGallery($page->images, $galleryOptions); More info about all that is in the readme: https://github.com/blynx/MarkupProcesswirePhotoswipe
      What do you think? Any ideas, bugs, critique, requests?
      cheers
      Steffen
    • By mtwebit
      Tasker is a module to handle and execute long-running jobs in Processwire. It provides a simple API  to create tasks (stored as PW pages), to set and query their state (Active, Waiting, Suspended etc.), and to execute them via Cron, LazyCron or HTTP calls.
      Creating a task
      $task = wire('modules')->Tasker->createTask($class, $method, $page, 'Task title', $arguments); where $class and $method specify the function that performs the job, $page is the task's parent page and $arguments provide optional configuration for the task.
      Executing a task
      You need to activate a task first
      wire('modules')->Tasker->activateTask($task); then Tasker will automatically execute it using one of its schedulers: Unix cron, LazyCron or TaskerAdmin's REST API + JS client.
      Getting the job done
      Your method that performs the task looks like
      public function longTask($page, &$taskData, $params) { ... } where $taskData is a persistent storage and $params are run-time options for the task.
      Monitoring progress, management
      The TaskerAdmin module provides a Javascript-based front-end to list tasks, to change their state and to monitor their progress (using a JQuery progressbar and a debug log area). It also allows the on-line execution of tasks using periodic HTTP calls performed by Javascript.

       
      Monitoring task progress (and log messages if debug mode is active)

       
      Task data and log

      Detailed info (setup, task dependencies, time limits, REST API etc.) and examples can be found on GitHub.
      This is my first public PW module. I'm sure it needs improvement
       
    • By netcarver
      A very simple textformatter that was inspired by Diogo's RemoveHeight textformatter.
      This one strips the height from any images and either adds a custom class or adds a max-width:100% as an embedded style.
      Github: https://github.com/netcarver/TextformatterFluidImages
      PW Repo: To Be Confirmed.