Mail from Linux/Shell


Recommended Posts

There is a standard utility simply called mail that is installed by default on most Linux and UNIX systems. You can find a basic tutorial for it here. If you need more functionality than the basics covered in that tutorial, mail is very well documented in its man page.

  On 05/08/2013 at 17:17, xorangekiller said:

There is a standard utility simply called mail that is installed by default on most Linux and UNIX systems. You can find a basic tutorial for it here. If you need more functionality than the basics covered in that tutorial, mail is very well documented in its man page.

 

Hi, I have already done that. But I need a utility which can pass a parameter like "from" and "smtp server ip" and execute it from commandline itself. I have mail, mailx, sendmail installed by default. I have the vbs script for this which uses "from, to, server_IP". But I need to make either a shell script or a simple command for the same.

I might be wrong but I don't think you can pass FROM as parameter to sendmail, postfix or the likes.

 

There's a quirky way to do that, telneting to your local mail server on port 25 and manually forging the email:

HELO yourdomain
MAIL FROM:youraddress@yourdomain
RCPT TO:someone@somewhere
DATA
Subject: this is so awkward Stallman would be proud
blahblah
whateverwhatever
.
QUIT

You could then spawn a non interactive telnet session from your script with all the mail parameters.

 

Again, quirky, but works.

  On 06/08/2013 at 11:10, ichi said:

I might be wrong but I don't think you can pass FROM as parameter to sendmail, postfix or the likes.

 

There's a quirky way to do that, telneting to your local mail server on port 25 and manually forging the email:

HELO yourdomain
MAIL FROM:youraddress@yourdomain
RCPT TO:someone@somewhere
DATA
Subject: this is so awkward Stallman would be proud
blahblah
whateverwhatever
.
QUIT
You could then spawn a non interactive telnet session from your script with all the mail parameters.

 

Again, quirky, but works.

 

In the past I've done something similar. Some distros allow you to open sockets within the shell (Redhat does, Debian doesn't AFAIK), so you can open a socket on port 25 and then redirect output into the "file" that gets created.

 

This is code similar to what I've done in the past. (Untested so it might be bugridden)...

 

 

#! /bin/bash

mail_server="smtp.something.com"
sender="test@test.com"
recipient="someone.else@test.com"
message="Hello, world!"

if ! exec 5<>"/dev/tcp/${mail_server}/25"; then
    echo "Could not open socket on port 25 to send email." >&2
    exit 1
else
    _response_code=""
    _message=""

    # Check socket open return code.
    read -u 5 _response_code _message
    if ! [ "${_response_code}" != "220" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    # Build the email header.
    local _message_header=(
        "HELO"
        "MAIL FROM:<${sender}>"
        "RCPT TO:<${recipient}>"
    )

    # Send the header text.
    for _header in "${_message_header[@]}"; do
        echo -e "${_header}\r" >&5
        read -u 5 _response_code _message
        if [ "220" != "${_response_code}" ]; then
            echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
            exit 1
        fi
    done

    # Signal start of message content.
    echo -e "DATA\r" >&5

    read -u 5 _response_code _message
    if [ "${_response_code}" != "354" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    echo -e "${message}\r" >&5

    # Signal end of message
    echo -e "\r\n.\r" >&5
    read -u 5 _response_code _message

    if [ "220" != "${_response_code}" ]; then
        echo "Unable to send email to SMTP host. Reason: ${_message}." >&2
        exit 1
    fi

    echo "QUIT\r" >&5

    echo "Email sent!"

fi

Python's an easy option too if you want do make your own script, only takes a couple lines of code via smtplib, many distros have it installed by default and super easy to get if not. You mentioned VBScript so you should be able to figure this out rather quickly. An off the cuff example... It might even work, I'm just making this up, haven't tested it, but you can get the gist of it. If anything set it up to handle command line arguments and symlink it into somewhere in your path so you can access it from anywhere if needed.

 

#!/usr/bin/python

import smtplib

sender = 'whoever@whereever.com'
receivers = ['me@here.com','me@there.com']

message = """From: From Me <whoever@whereever.com>
To: To Me <me@here.com>
Subject: Just testing.

This is just a test from Python.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Mail sent ok."
except SMTPException:
   print "Mail not sent."
You can add authentication, encryption and all that if needed. Some more examples on the Python docs site, pretty easy stuff.

http://docs.python.org/2/library/email-examples.html

http://docs.python.org/2/library/smtplib.html

@Ichi - I can do that manually. But I want to know if anyone knows of a working script otherwise it will take me some time make one.

 

@Majesticmerc - Thanx a lot for that script, it looks good. I will try that. :)

 

@MaxNorris - I don't have any experience with python and I don't know if python is installed on the linux box. But I will try that as well. Thanks a lot. :)

 

Anyways, I have found a brilliant perl script which has a lot of options that can be parsed via commandline => http://caspian.dotconf.net/menu/Software/SendEmail/

 

But I would prefer a shell script over perl script for now. Thanks a lot everyone for your time and help. :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Popular Now

  • Posts

    • This is the device I was referring to. At the end of the day, there really isn't a technical difference between an xbox branded handled PC, and a handheld xbox. To your later point about it not running xbox games, I do feel like that would have been a nice value add. The handheld probably has the hardware to run at a Series S level. It is really just software restrictions that prevent it.
    • This is what Jonny Ive wanted the whole time, just a glass slab with wireless charging, bluetooth for transferring and an e-Sim so there would be no buttons or ports but they wouldn't let him.
    • The 26 naming convention seems a given, now. I think they’ll go big on a UI overhaul this year to paper over the cracks of their AI offering (or lack thereof).
    • Ring Floodlight Cam Wired Pro: Get advanced security at a heavy discount by Paul Hill Home security is extremely important. If you ever get a car stolen, or someone breaks into your property, you have the crime all captured on camera making it much easier for the police to solve the crime. Now, thanks to a 28% discount from the $249.99 list price, you can grab the Ring Floodlight Cam Wired Pro for just $179.99. This Amazon product features 2K video, motion-activated LED floodlights, Two-Way Talk and Audio+, 3D motion detection, and a 110 dB security siren. Prime members can order this and get it by Father’s Day; if you aren’t a Prime member, you can start a free trial today. While it is a feature-rich product, you’ll need to buy a Ring Protect subscription plan to use some of the features such as 24/7 recording, event history, and person and package alerts. Right now, this product is at its lowest-ever price on Amazon, so if you’re interested, don’t wait until Black Friday when it’s supposedly on sale but not at its lowest price. What it does (and doesn't): Pro-level features explained You’re probably wondering why this camera has Pro in its name. That’s mainly down to features like Bird’s Eye View, Bird’s Eye Zones, and Two-Way Talk. Bird’s Eye View allows you to see where someone has been and how they got there with an aerial view; Bird’s Eye Zones lets you map out certain areas so you only get notifications about things in those zones; and Two-Way Talk is a feature that lets you talk and listen to the person and the door via the Ring app. In regards to connectivity, this Ring product supports 802.11 b/g/n Wi-Fi connections @ 2.4GHz and 5.0GHz. When connected using 5.0GHz, the connectivity should be very good with no lagging or intermittency. The video-related highlights include 2K video which should give you a brilliant view of the people who come onto your property; Live View which lets you see the camera’s view on Fire TV, Fire Tablet, Echo Show, and other compatible Echo devices; and color night vision which will let you see what’s happening even if it’s dark out. Should you buy it? Most of the customer reviews of the Ring Floodlight Cam Wired Pro seem to be pretty positive with praise for the easy installation. One of the commenters recommended taking out the affordable subscription to gain the extra functionality. Meanwhile someone complained that the light was attracting bugs, but this will depend on your climate. Live View is a major point to take note of if you’re already invested in the Amazon smart home ecosystem as you’ll have benefits compared to if you bought another brand of security camera. Ring Floodlight Cam Wired Pro (White): $179.99 (Amazon US) / MSRP: $249.99 Ring Floodlight Cam Wired Pro (Black): $179.99 (Amazon US) / MSRP: $249.99 Ring Floodlight Cam Wired Pro with Plug-in Power (White): $199.98 (Amazon US) / MSRP: $269.98 Ring Floodlight Cam Wired Pro with Plug-in Power (Black): $199.98 (Amazon US) / MSRP: $269.98 This Amazon deal is US-specific and not available in other regions unless specified. If you don't like it or want to look at more options, check out the Amazon US deals page here. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
  • Recent Achievements

    • Enthusiast
      the420kid went up a rank
      Enthusiast
    • Conversation Starter
      NeoToad777 earned a badge
      Conversation Starter
    • Week One Done
      VicByrd earned a badge
      Week One Done
    • Reacting Well
      NeoToad777 earned a badge
      Reacting Well
    • Reacting Well
      eric79XXL earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      476
    2. 2
      +FloatingFatMan
      279
    3. 3
      ATLien_0
      246
    4. 4
      snowy owl
      206
    5. 5
      Edouard
      190
  • Tell a friend

    Love Neowin? Tell a friend!