Friday, 5 October 2018

Gmail API and Python - Resolved - SMTPAuthenticationError (534, '5.7.14') using Gmail API and Python


While working on Gmail API and integrating it in a project using Python, I came across this error "SMTPAuthenticationError (534, '5.7.14')" whose solution was not so obvious. I found many people facing the same problem on different forums so I ended up writing a post for future reference. The exact error was:

"(534, '5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbsl\n5.7.14 ....
> Please log in via\n5.7.14 your web browser and then try again.\n5.7.14  Learn more at\n5.7.14  https://support.google.com/mail/answer/78754 g65-v6sm13547202pfg.98 - gsmtp')"

You need to check and verify following things:

STEP 1:
Recheck your username and password (I know its obvious but still you might be making some mistake while entering the password)

STEP 2:
Check if you have enabled less secure apps by navigating to:
 https://www.google.com/settings/security/lesssecureapps

STEP 3 (Important):
Disabling Captcha for your Client App which is accessing the Gmail API. Using your browser, login to your Gmail Account and navigate to the link:
http://www.google.com/accounts/DisplayUnlockCaptcha

Click the continue button. You will see the following message:
"Account access enabled Please try signing in to your Google account again from your new device or application."

Its been found that google resets this setting of UnlockCaptcha if there are any changes in the Gmail Account Settings and therefore the error SMTPAuthenticationError (534, '5.7.14') occurs. You need to go through STEP 3 again so that your App can access Gmail API and send mail.

Thursday, 18 January 2018

How To Secure Your Redis Installation on CentOS 6.x with Password Authentication | Configuring a Redis Password for CentOS




Using CentOS 6.x, for applying Password Authentication in Redis through requirepass Configuration, we need to edit the redis.conf file.

Open the configuration file(name of the file may vary in your machine):

/etc/redis/6379.conf

Find # requirepass foobared and change it in following way:
requirepass yourpassword
Save your changes and restart redis-server
service redis_6379 restart
redis-cli
127.0.0.1:6379>set test "TestEntry"
Since we have applied password in Redis Configurtion file "/etc/redis/6379.conf" , we will get NOAUTH error as follows:
(error) NOAUTH Authentication required.
while being in redis-cli, write following command with your password for authentication:
127.0.0.1:6379> auth yourpassword
OK
And then when you will set any value, it will return OK
127.0.0.1:6379> set test "TestEntry"
OK
We can also run redis-cli directly with password authentication by using following command:
redis-cli -a "yourpassword"
We get OK when we run redis-cli in this way and set any value:
127.0.0.1:6379> set test2 "TestEntry2"
OK

Tuesday, 16 January 2018

Python - HTML to Text for sending SMS - SMS Safe characters - remove \xa0


Following code are some of the alternatives for removing special characters from string:
from bs4 import BeautifulSoup

raw_html = 'Dear Parent,
This is a test message, kindly ignore it. 
Thanks
' clean_text = BeautifulSoup(raw_html, "lxml").text print clean_text #u'Dear Parent,\xa0This is a test message,\xa0kindly ignore it.\xa0Thanks'
The above code produces these characters \xa0 in the string. To remove them properly, we can use two ways. The first one is BeautifulSoup's get_text method with strip argument as True
clean_text = BeautifulSoup(raw_html, "lxml").get_text(strip=True)

print clean_text
# Dear Parent,This is a test message,kindly ignore it.Thanks

The other option is to use python's library unicodedata
import unicodedata

clean_text = BeautifulSoup(raw_html, "lxml").text
print clean_text
#u'Dear Parent,\xa0This is a test message,\xa0kindly ignore it.\xa0Thanks'

new_str = unicodedata.normalize("NFKD",clean_text)
print new_str
# u'Dear Parent,This is a test message,kindly ignore it.Thanks'