Snapping one orientation to another?
I have two ideas. 

first one summarized in this image, using local transformations and face snap. moving using 3d cursor transformation or moving first the center point to edge.



the second is use some script like this:

import bpy

from mathutils import Vector, geometry
from math import sqrt

print("#"*20)

#"object names"
n1 ="Plane"
n2 = "a" #this is the object to move

#data object 1
object = bpy.data.objects[n1]
object.select = True

bpy.context.scene.objects.active = object

v11,v12,v13, v14 = [(object.matrix_world*v.co) for v in object.data.vertices]

ob1_normal = geometry.normal(v11,v12,v13)

print(v11,v12,v13,ob1_normal)

bpy.ops.object.select_all(action='DESELECT')

#data object 2

object = bpy.data.objects[n2]
object.select = True

bpy.context.scene.objects.active = object

v21,v22,v23, v24 = [(object.matrix_world*v.co) for v in object.data.vertices]

ob2_normal = geometry.normal(v21,v22,v23)

#print(v21,v22,v23,ob2_normal)

##############################intersection point


int = geometry.intersect_plane_plane(v11, ob1_normal, v22, ob2_normal)
#bpy.context.scene.cursor_location = int[0]

#print("new",int)
distance = (v22 - int[0]).length  #distance vertice and intersection point
#print("distance ", distance)

### translate the object

bpy.ops.transform.translate(value=(distance, 0, 0), constraint_axis=(True, False, False), constraint_orientation='LOCAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, release_confirm=True, use_accurate=False)