Как проверить, существует ли электронная почта без отправки в Ruby?Использование email_veracity_checker - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь создать скрипт ruby, который проверяет реальное существование электронной почты. Я нашел email_veracity_checker, но я не понимаю, как реализовать простой тест. Файл «Readme» говорит только следующее:

# Add following entry in your config/environment.rb
config.gem 'email_veracity_checker', :lib => "email_check"

Как использовать:

#first param is user email address
#second sender address
#third param is domain address

#Note: It's not sending email, at the end point they quit connection.
EmailCheck.run("kiran@joshsoftware.com","no-reply@joshsoftware.com","joshsoftware.com").valid?

Возвращение может быть истинным или ложным "

Может ли кто-нибудь мне помочь? Спасибо

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Что вы пробовали?Это выглядит довольно просто.Что он делает, так это настраивает SMTP-соединение, как вы делаете это при отправке почты.В определенный момент в SMTP-соединении ваш сервер говорит что-то вроде этого:

Я хотел бы отправить письмо на ... @ .... com

Большинство серверов вернет ошибку, если этот адрес не существует.После этого обычное SMTP-соединение будет свободно отправлять реальное тело сообщения.Этот класс, однако, в этот момент закрывает соединение, поэтому почта не будет отправлена.

Однако перед отправкой цитируемого сообщения необходимо указать почту отправителя.Вот почему вам нужно это указать.Кроме того, вам также необходимо определить почтовый домен владельца, поскольку он необходим для полезной нагрузки EHLO.


Как насчет того, чтобы сделать что-то подобное (я использую mongo_mapper, так чтобыть другим в вашей ситуации):

class User
    include MongoMapper::document
    ...
    key mail, String, :required => true
    ...
    validate :validate_mail
    ...
    def validate_mail
        if !EmailCheck.run(self.mail, "no-reply@yourdomain.com", self.mail.split('@')[1]).valid?
            errors.add :mail, "is invalid."
        end
    end 
end
1 голос
/ 18 августа 2011

Если вам это нужно для сценария ruby, вы можете сделать что-то вроде этого.Просто потребуйте электронную почту, найденную в lib этого драгоценного камня.

require 'email_check.rb'

is_valid = EmailCheck.run("kiran@joshsoftware.com", "no-reply@joshsoftware.com", "joshsoftware.com").valid?

puts "is valid: #{is_valid}"
...